JavaScript中的变量声明早于赋值分析_javascript技巧
程序员文章站
2022-05-04 17:05:56
...
如下
实际有两个步骤:
1 初始化a为undefined
2 a赋值3
因此会出现一些“匪夷所思”的现象,即JS中变量可以先使用后声明。这在Java中是不允许的。
编译通不过。但JS可以,如下
虽然是undefined,但不会报错。说明a的确声明了,且为undefined。
如果只是“alert(a)”,没有“var a”的话JS引擎会报错的。
FF中如下
alert(a);
var a = 1;
这次输出的仍然是undefined而非1。
又如,
alert('a' in window); // true
var a;
虽然代码形式上写在alert后,引擎仍然先自动处理var的声明。最后输出的是true。
明白了这些就不难理解下面的代码运行结果了
if (!("a" in window)) {
var a = 1;
}
alert(a);
复制代码 代码如下:
var a = 3;
实际有两个步骤:
1 初始化a为undefined
2 a赋值3
因此会出现一些“匪夷所思”的现象,即JS中变量可以先使用后声明。这在Java中是不允许的。
复制代码 代码如下:
System.out.println(a);
int a = 1;
int a = 1;
编译通不过。但JS可以,如下
复制代码 代码如下:
alert(a);
var a;
var a;
虽然是undefined,但不会报错。说明a的确声明了,且为undefined。
如果只是“alert(a)”,没有“var a”的话JS引擎会报错的。
复制代码 代码如下:
alert(a);
FF中如下
虽然可以先使用再声明,但这样会造成赋值的效果丢失。如下
复制代码 代码如下:
alert(a);
var a = 1;
这次输出的仍然是undefined而非1。
又如,
复制代码 代码如下:
alert('a' in window); // true
var a;
虽然代码形式上写在alert后,引擎仍然先自动处理var的声明。最后输出的是true。
明白了这些就不难理解下面的代码运行结果了
复制代码 代码如下:
if (!("a" in window)) {
var a = 1;
}
alert(a);
推荐阅读
-
javascript:变量声明&&赋值的提升和函数声明&&定义的提升在不同情况下的表现
-
PHP变量赋值、代入给JavaScript中的变量
-
JavaScript中 ES6变量的结构赋值
-
JavaScript中的变量声明你知道吗
-
PHP变量赋值、代入给JavaScript中的变量_php实例
-
PHP变量赋值、代入给JavaScript中的变量_php实例
-
javascript中的数字与字符串相加实例分析_javascript技巧
-
js中hash和ico的关联分析_javascript技巧
-
js中hash和ico的关联分析_javascript技巧
-
JavaScript中全局变量、函数内变量以及常量表达式的效率测试_javascript技巧