您现在的位置:首页 --> 查看专题: 赋值
var a = {n:1};
a.x = a = {n:2};
alert(a.x); // --> undefined
看 jQuery 源码 时发现的这种写法。以上第二句 a.x = a = {n:2} 是一个连续赋值表达式。这个连续赋值表达式在引擎内部究竟发生了什么?是如何解释的?
直奔代码: var a = {x: 1}; a.x = a = { }; alert(a.x); // --> undefined 来自 JE: 写了 10 年 JavaScript 未必全了解的连续赋值运算. clue 的评论已经从 ECMA 规范分析了具体原因,下面尝试更直观的说明此问题。 对于连续赋值语句,我们经常会这样理解: var a = b = 1; // 等价: var a; a = b = 1; 上面的理解很容易看出 var a = b = 1; 会造成 b 泄漏到上层作用域,有可能生成全局变量。 根据直觉,我们可能会推断: a [...
[ 共2篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
-
[57] memory prefetch浅析
-
[54] 转载:cassandra读写性能原理分析
-
[47] 深入浅出cassandra 4 数据一致性问
-
[46] MySQL半同步存在的问题
-
[42] 《web前端最佳实践》—高维护性css
-
[41] 获取Dom元素的X/Y坐标
-
[41] javascript插入样式
-
[37] MySQL vs NoSQL 效率与成本之争
-
[36] 不是书评 :《我是一只IT小小鸟》
-
[35] 基本排序算法的PHP实现
赞助商广告