【发布时间】:2015-12-19 21:54:41
【问题描述】:
是否有一个已知的原因,为什么在 ES6 中将 null 作为参数传入时不使用默认参数?
function sayHello(name = "World") {
console.log("Hello, " + name + "!");
}
sayHello("Jim"); // Hello, Jim!
sayHello(undefined); // Hello, World!
sayHello(null); // Hello, null!
【问题讨论】:
-
因为 null 是有效值?
-
@toskv
undefined.. -
不,不是 :) 你可以在这里阅读 undefined 和 null 之间的区别stackoverflow.com/questions/5076944/…
-
@toskv 如果
undefined不是一个值,那么它可以不被赋值,但它可以被赋值。这是确定某物是否为值的最简单测试。很简单,这个答案在上下文中使用是错误的:undefined在某些情况下被用作 默认值;这不是使未定义的“不是一个值”。考虑:a = new Array(1)。然后a[0]将产生undefined值,即使0 in a为假。也就是说,a[0]包含“无价值”,即使它会评估为(默认)undefined值。 -
@toskv 我已经在上面解释了为什么这是不正确的。谈论“如果未定义变量”(在
typeof x === 'undefined'的情况下,单独的x会/可能抛出 ReferenceError)与undefinedis 的事实无关价值。特别是,JavaScript 中的“未定义”not 严格表示“尚未定义/声明”。
标签: javascript ecmascript-6 optional-parameters