首页 > 试题广场 > 分析下面代码: <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 回复(2)

p标签那个1不输出吗

发表于 2019-08-08 21:18:26 回复(1)
。。。。每次都忘记,变量提升,赋值不提升!!!
发表于 2019-06-28 19:01:59 回复(0)
var a变量提升了 但是 赋值放在后面 因此为undefined
发表于 2019-08-10 22:44:04 回复(0)
p标签会被点击后的document.write覆盖掉
发表于 2019-08-25 13:51:49 回复(0)
就想知道为啥没1
发表于 2019-08-10 14:56:25 回复(3)
变量提升   但函数内部定义的一个变量与外部相同时,那么函数体内的这个变量就会被上升到最顶端
函数提升:在js中,函数的声明会被提升到最顶部执行,变量提升也一样。如果函数提升和变量提升同时存在,函数提升优先级高于变量提升

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