我不明白为什么没有打字稿编译器将undefined
与unassigned
变量分类。
class MyClass {
N1: number;
N2: number;
}
var mc = new MyClass();
mc.N2 = mc.N1;
alert(mc.N2); // output: undefined
为什么输出Use of unassigned variable 'mc.N1'
?
不能undefined
,因为我已经明确定义了。它是一个数字(一个完全没有默认值的数字)。
另外,undefined
表示:我们没有变量mc.N2
。
我的问题是:我误解了什么吗?如果是,请纠正我。
答案 0 :(得分:2)
以下是您在javascript中的代码:
var MyClass = (function () {
function MyClass() {
}
return MyClass;
})();
var mc = new MyClass();
mc.N2 = mc.N1;
alert(mc.N2);
为什么输出没有使用未分配的变量' mc.N1'?
javascript中没有这样的状态未分配。
因为我已经明确定义,所以不能定义。这是一个数字(a 完全没有默认值的数字)。
在javascript中,变量是未定义的,未分配任何值,
或null也是一个值,或任何字符串,ingeger或float,date或bool。
但是声明number
对变量的值没有影响。它是打字稿内部事务。
此外,未定义的意思是:我们没有变量mc.N2。
未定义并不意味着,你没有变量,这意味着mc.N2变量没有赋值但是
答案 1 :(得分:2)
你误解了未定义的含义。这并不意味着该属性是在代码中定义的。让我们直接从MDN阅读:
尚未赋值的变量属于undefined类型。
有关详细信息,请参阅此处undefined
这正是您的代码中发生的事情。从未分配过mc.N1的值。
希望这有帮助。