![](/img/trans.png)
[英]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.