[英]Creating a JavaScript function to change a previously declared variable
[英]JavaScript - Is it okay to define a property of a previously declared object during a variable declaration?
滥用赋值运算符的RTL关联性是常见的做法(或至少在语法上在跨浏览器和JS的实现上至少在语法上有效),以便一个可以定义两个变量(第一个为对象),以便第二个分配给(新)该对象的命名属性,该对象本身已分配给另一个值,因此不会生成SyntaxError()?
我知道这听起来很复杂,但这是代码:
var x = {}, y = x.l = 9; // generates no errors
console.log(x.l, y); // 9 9
以来:
var t = {}, t.l = 9; // Syntax Error, no doubt because t is already defined
该行:
var x = {}, y = x.l = 9;
有效地变为:
var x = {};
var y = x.l = 9;
处理为:
// Parse phase
var x; // assigned the value undefined
var y; // assigned the value undefined
// Execution phase
x = {};
x.l = 9;
y = x.l;
注意,在赋值表达式中,右边的值分配给左边的表达式。 复合分配是从左到右评估的 ,但是从右到左分配的 ,因此xl = 9
会在y = xl
之前分配,即使它在右侧。
现在,使用第二个示例进行尝试:
var t = {}, t.l = 9;
变为:
// Parse phase
var t; // assigned the value undefined
var t.l; // syntax error, stop
语句开头的var关键字表示下一件事必须是有效的标识符。 tl
不是有效的标识符(只能解释为标识符,后跟点属性访问器),仅此而已。 一切都停止了。
您需要使用分号-这就是解析器期望的错误:
var t = {}; tl = 9; console.log(t);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.