Javascript 未定义属性时,设置默认值
为什么只有一个属性设置为“未定义”,尽管我写了,但当它是“未定义”时,将它设置为一个值Javascript 未定义属性时,设置默认值,javascript,object,Javascript,Object,为什么只有一个属性设置为“未定义”,尽管我写了,但当它是“未定义”时,将它设置为一个值 var e = { f: function(g) { g === 'undefined' ? g = {} : {}; g.h === 'undefined' ? g.h = 1 : {}; g.i === 'undefined' ? g.i = 2 : {}; console.log(g
var e = {
f: function(g) {
g === 'undefined' ? g = {} : {};
g.h === 'undefined' ? g.h = 1 : {};
g.i === 'undefined' ? g.i = 2 : {};
console.log(g);
}
};
期待中的感谢 使用
未定义的
,而不是未定义的
但你可以写得更清楚:
if (g === undefined) g = {};
这就是我浏览器的JavaScript控制台所说的——尝试删除“未定义”周围的单引号标记。似乎JavaScript的弱类型和自动转换只走了这么远 使用
typeof g==='undefined'
,而不是g=='undefined'
您也可以使用g==undefined
+1在这种情况下,我认为使用
x===undefined
比typeof x==='undefined'
更合适,因为x
在范围内是明确的。FWIW,您使用三元?:
非常可疑。不要对副作用使用?:
(例如,不要在其内部赋值),而是使用表达式的返回值:g=g==undefined?“默认值”:g
。但我通常更喜欢使用相反的形式(例如正的是第一位):g=g!==未定义?g:“默认值”
。(或者更好,如果使用正常的)不知道,可能是一个习惯,但同时我认为,在这种情况下,这是一个坏习惯:D
'undefined' === undefined
false
undefined === undefined
true