第一题答案:undefined
原因:
首先,大家要明白,javascript没有c/c++所谓的块作用域,所以在if、for、while等语句中使用var定义的变量,实际上等同于在这些语句所在的作用域中定义变量。
其次,在javascript代码执行进入某一个作用域时,会先检索所有function和var声明的函数和变量,但不执行var的赋值代码,function也只是简单的开辟一块内存,具体function中怎么执行,需要到调用的时候再去处理。
再次,var a = 1;这句在javascript中是被拆成var a; a = 1;这两句执行的,变量声明后,未赋值时,默认值均是undefined。
这样就造成了一个结果,在if语句执行之前,作用域里就有了a变量的声明,所以"a" in window这句始终是true,当非“!”时,if语句用于为false,而a=1,永远不能被执行。
原因:
首先,大家要明白,javascript没有c/c++所谓的块作用域,所以在if、for、while等语句中使用var定义的变量,实际上等同于在这些语句所在的作用域中定义变量。
其次,在javascript代码执行进入某一个作用域时,会先检索所有function和var声明的函数和变量,但不执行var的赋值代码,function也只是简单的开辟一块内存,具体function中怎么执行,需要到调用的时候再去处理。
再次,var a = 1;这句在javascript中是被拆成var a; a = 1;这两句执行的,变量声明后,未赋值时,默认值均是undefined。
这样就造成了一个结果,在if语句执行之前,作用域里就有了a变量的声明,所以"a" in window这句始终是true,当非“!”时,if语句用于为false,而a=1,永远不能被执行。
本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!