1 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
當(dāng)你沒有聲明你的變量并且你沒有在 Javascriptstrict
模式下運(yùn)行你的模塊時(shí),那么首先分配給該變量:
user = user_data
創(chuàng)建一個(gè)名為 的自動(dòng)全局變量user
。這意味著您的兩條路線將共享同一個(gè)變量。
而且,由于您的兩條路由都具有異步操作,即使是單線程的東西,您的兩條路由仍然可以同時(shí)進(jìn)行,并且都嘗試使用相同的全局變量。一條路線將覆蓋另一條路線的值。這在基于服務(wù)器的代碼中是一場(chǎng)災(zāi)難,因?yàn)橥ǔ#谀度肷a(chǎn)之前,該錯(cuò)誤不會(huì)出現(xiàn),而且很難找到可重現(xiàn)的案例。
最好的答案是始終在嚴(yán)格模式下運(yùn)行代碼,然后 JS 解釋器會(huì)將其設(shè)為錯(cuò)誤,并且您將永遠(yuǎn)不會(huì)被允許以這種方式運(yùn)行代碼。錯(cuò)誤將很快被發(fā)現(xiàn)。
let
那么顯然,總是用or聲明變量const
。很少有理由再使用var
aslet
并const
讓您更好地控制變量的范圍。
要在嚴(yán)格模式下運(yùn)行您的模塊,請(qǐng)插入:
'use strict';
在任何其他 Javascript 語句之前。
或者,使用 TypeScript 之類的東西,它不會(huì)讓你做一些草率的事情,比如不聲明你的變量。
添加回答
舉報(bào)