【JavaScript】var a = b = 3;是如何执行的?
来源:互联网 发布:舆情监控软件 编辑:程序博客网 时间:2024/05/21 16:54
(function(){ var a = b = 3;})();console.log("a defined? " + (typeof a !== 'undefined'));console.log("b defined? " + (typeof b !== 'undefined'));
由于 a 和 b 都定义在函数的封闭范围内,并且都始于 var关键字,大多数JavaScript开发人员期望 typeof a 和 typeof b 在上面的例子中都是undefined。
然而,事实并非如此。这里的问题是,大多数开发人员将语句 var a = b = 3; 错误地理解为是以下声明的简写:
var b = 3;var a = b;
但事实上,var a = b = 3; 实际是以下声明的简写:
b = 3;var a = b;
因此(如果你不使用严格模式的话),该代码段的输出是:
a defined? falseb defined? true
但是, b 如何才能被定义在封闭函数的范围之外呢?是的,既然语句 var a = b = 3; 是语句 b = 3; 和 var a = b;的简写, b 最终成为了一个全局变量(因为它没有前缀 var 关键字),因此仍然在范围内甚至封闭函数之外。
需要注意的是,在严格模式下(即使用 use strict),语句var a = b = 3; 将生成ReferenceError: b is not defined的运行时错误,从而避免任何否则可能会导致的headfakes /bug。 (还是你为什么应该理所当然地在代码中使用 use strict 的最好例子!)
阅读全文
0 0
- 【JavaScript】var a = b = 3;是如何执行的?
- 求和计算时var a+ var b+ varc怎么(如何)输出的是sum(a+b+c)
- var a= b || c
- a=b+(b=a)*0是如何编译
- function-a(){}与var-b-=-function(){}的区别
- js中var a= b || c的写法
- a+=a+=b的执行
- var a=b=5;
- javascript中var=a=b=c=2代表什么
- 三元运算符var a=b>c?:b:c
- var a = {} 与 var a = function(){} 的区别
- 程序是如何执行的(一)a=a+1
- 程序是如何执行的(一)a=a+1
- var a=10, b=20 , c=30;
- JavaScript 里 var a =a ||{} 啥意思?
- set var=%str:~a,b%中的规律
- js中 var a = function(){} 与function b(){}两种函数声明的区别
- 当a=1,b=2,c=3时,if(a>c)b=a;a=c;c=b;的执行结果详解
- 51nod 1120 机器人走方格V3(组合数学+卡特兰数+Lucas)
- Java入门到精通
- PREV-6 翻硬币
- Machine Learning A Probabilistic Perspective 笔记
- Wannafly挑战赛4 C 割草机
- 【JavaScript】var a = b = 3;是如何执行的?
- PREV-5 错误票据
- UGUI研究院之Prefab嵌套特效部分(二十九)
- 用 Python 解方程
- oracle初学
- 结构体与链表
- markdown中实现首行缩进的两种方法
- 快速排序法二(C)
- poj_1287_prime