Javascript 类型未定义和 void 之间的区别
Javascript difference between typeof undefined and void?
在做一些打字稿时,我遇到了这个我以前在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'
吗? 如果不是,哪一个更好,为什么?
谢谢
有差异。
如果要检查全局变量 x
,然后typeof x === 'undefined'
会返回true
并x === void 0
抛出ReferenceError
.
您需要使用window.x === void 0
才能获得true
。 但是在这种情况下,它知道x
至少会设置为 undefined
,因为它是一个函数参数,因此错误永远不会成为问题。
我认为为了可读性,我更喜欢使用typeof x === 'undefined'
.
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript中的函数和对象之间没有区别吗?
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- javascript函数的:和=之间的区别
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 函数中this和var之间的区别
- “util.inherits”和在NodeJS中扩展原型之间的区别
- Math.min()和Math.max()之间有什么区别?在Javascript中
- webpack开发模式和生产构建模式之间有什么区别
- servlet和代理servlet之间的区别
- Javascript 类型未定义和 void 之间的区别
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 布局引擎和javascript引擎之间的区别
- 什么's extjs中的mon()和on()之间的区别
- type=text/javascript和language=javascript之间的区别
- 函数()和新函数()之间的区别
- JavaScript中let和var之间的区别
- 蓝鸟的done()和spread()之间的区别
- Node.js HTTP/NET——连接和请求之间的区别