![](/img/trans.png)
[英]How can I read/write local variables dynamically in JavaScript/TypeScript?
[英]Can I prevent accidental overwrite of local variables in TypeScript / JavaScript?
今天我浪費了一個小時來調試一個簡單的問題,其中一個名為server
的局部變量正在初始化和配置 - 然后,在同一文件的最后一行中,意外地重新聲明它,例如由另一個var server = ...
聲明,有效地創建一個名為server
的新變量,從而導致前一個變量超出范圍; 然而,因為這些是相同類型的變量,具有相同的名稱,所以其他一切繼續工作,這使得調試相當困難。
是否有TypeScript或JavaScript語言功能,可以防止這種情況?
我的想法是,在同一范圍內聲明兩個具有相同名稱的變量,根本不應該被允許。
也許有一個短絨或一些質量保證工具,有能力檢查和防止這種事情? (也許還有其他“壞”模式?)
盡可能使用let
。
在聲明聲明之前不能使用let
變量:
var x = 3;
function f() {
console.log(x); // ReferenceError, x is not defined
let x = 5;
}
兩種選擇:
let
。 var
jslint 。 在GitHub / Microsoft / Typescript頁面上有一個關於此的已關閉問題 。 建議是以ECMA Script 6為目標並使用let
。
let
let x = "foo";
let x = "bar"; // TypeScript with ECMA 6 will complain here
console.log(x);
重復聲明,x
var
JSLint 此外, 雖然以下內容不會引發TypeScript錯誤 ,但即使您沒有使用strict, jslint工具也會抱怨它。
(function () {
var x, y;
x = "foo";
y = "foo";
function sayMsg() {
// jslint will complain here
var y = "bar";
}
sayMsg();
// jslint will also complain here
var x = "bar" + y;
}());
這就是jslint會告訴你的:
從第3行重新定義'y'。
將其與之前的'var'語句相結合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.