【发布时间】:2015-04-05 01:12:57
【问题描述】:
在做一些打字稿时,我遇到了我以前在 javascript 中没见过的东西。
constructor(public x: number = 0, public y: string = "none"){
this.color = "red";
}
那部分正在编译成:
if (x === void 0) { x = 0; }
if (y === void 0) { y = "none"; }
但不应该是typeof x === 'undefined'吗?如果不是,哪个更好,为什么?
谢谢
【问题讨论】:
-
void 0给出值undefined,但输入较少。 (当然,在您的情况下,您没有手动输入。)所以x === void 0就像说x === undefined但略短。typeof x === 'undefined'是测试同一件事的漫长道路,只有在您不确定是否已声明x变量时才需要 - 但在这种情况下,您肯定知道它 is 已声明因为它是一个函数参数。 -
@nnnnnn 如果您添加更多细节/参考来解释为什么
void 0 === undefinedOP,似乎这可能值得提升为答案。 -
在现代 JavaScript 解释器中没有任何有意义的区别。
-
@Pointy 是的,我知道(假设没有愚蠢的重新定义)但显然 OP 还没有......我懒得挖掘链接,此外,nnnnnn 让我接受它。假设我现在应该挖一个:stackoverflow.com/a/4806358/156755
-
@nnnnnn 我确实看到了这个链接,现在它确实更有意义了,但我只是对此感到困惑,因为在我的本地编译器中,打字稿与 typeof
x === 'undefined'一起使用,但在现场操场上使用 @987654333 @这让我很想知道是否存在真正有意义的差异
标签: javascript