首页 > 试题广场 > 分析下面代码: <html> <head&
[单选题]
分析下面代码:
<html>
 <head>
 <script>
 function myFunc() {
 document.write(a);
 document.write(func());
 var a = 1;
 function func() {
 return 2;
 }
 }
 </script>
 </head>
 <body>
 <p>1</p>
 <button onclick = "myFunc()">点击</button>
 </body>
 </html>
点击按钮后页面上的最终输出结果为:()
  • 112
  • 12
  • 1undefined2
  • undefined2

题目问的是点击按钮后页面上的最终输出结果,所以原来页面上的p标签的1,会被document.write函数输出的内容覆盖。所以没有1。

打印a是undefined是因为var a的时候进行了变量提升,但是要执行到那一步才会真的赋值。

<html>
 <head>
 <script>
 function myFunc() {
 document.write(a); // a已变量提升,但是因为赋值在后面,所以打印undefined
 document.write(func()); // 执行函数 打印出2
 var a = 1; // 这里的a已经变量提升了,但是在这一步才赋值
 function func() {
 return 2;
 }
 }
 </script>
 </head>
 <body>
 <p>1</p>
 <button onclick = "myFunc()">点击</button> 
 </body>
 </html>
发表于 2019-08-19 10:43:32 回复(3)
。。。。每次都忘记,变量提升,赋值不提升!!!
发表于 2019-06-28 19:01:59 回复(0)

p标签那个1不输出吗

发表于 2019-08-08 21:18:26 回复(2)
实测没有1
发表于 2020-03-18 09:35:15 回复(0)
为什么2不会覆盖undefined?
发表于 2020-03-10 22:09:23 回复(0)
p标签会被点击后的document.write覆盖掉
发表于 2019-08-25 13:51:49 回复(0)
var a变量提升了 但是 赋值放在后面 因此为undefined
发表于 2019-08-10 22:44:04 回复(0)

调用在前,函数声明定义在后,函数声明提升,定义没有提升吧?这里在前面调用,不应该报错吗 不太理解。


发表于 2020-03-24 05:54:59 回复(0)

var a进行了变量提升,但是赋值在document.write之后,所以undefined。

页面上p标签的1被document.write覆盖了

发表于 2020-03-19 22:32:38 回复(0)
变量申明提升,变量赋值不提升,说三遍,申明提升,赋值不提升,声明提升赋值不提升,声明提升,赋值不提升
发表于 2020-03-11 21:19:00 回复(0)

document.write第一次执行会覆盖页面,变量提升但不会赋值。

发表于 2020-02-14 18:59:15 回复(0)
重点在考察。。变量提升
发表于 2019-12-22 14:01:56 回复(0)

代码解析。。。var a=1时。先var a后面再按顺序执行document.write(a),再执行a=1。。

发表于 2019-12-08 17:57:29 回复(0)
变量提升但是没有赋值,1会被页面覆盖,我也是醉了
发表于 2019-11-27 13:02:23 回复(0)
就想知道为啥没1
发表于 2019-08-10 14:56:25 回复(3)
变量提升   但函数内部定义的一个变量与外部相同时,那么函数体内的这个变量就会被上升到最顶端
函数提升:在js中,函数的声明会被提升到最顶部执行,变量提升也一样。如果函数提升和变量提升同时存在,函数提升优先级高于变量提升

发表于 2019-07-30 11:54:21 回复(0)