NodeJS(最新)。
我有以下代码。为什么第一个IF声明没有按预期工作?控件不会进入第一个IF语句。
我看到以下代码中第一行的有效console.log输出,并期望第一个IF语句也应执行其代码。但它并没有;第二个IF声明有效。
console.log("-- inside create IP() qData['osType'] is set to :: " + qData['osType'])
//--
if ( qData['osType'] == 'undefined' ) {
console.log("1 -- setting qData['osType'] = Linux by default for now. This should happen automatically.")
qData['osType'] = 'Linux'
console.log("1 -- inside create IP() if-statement-qData['osType'] and qData['osType'] is set to :: "+qData['osType'])
}
if ( typeof qData['osType'] == 'undefined' ) {
console.log("2 -- setting qData['osType'] = Linux by default for now. This should happen automatically.")
qData['osType'] = 'Linux'
console.log("2 -- inside create IP() if-statement-qData['osType'] and qData['osType'] is set to :: "+qData['osType'])
}
qData['osType'] = 'Linux'
//--
答案 0 :(得分:3)
如果您要检查未定义的内容,可以执行以下操作之一:
typeof foo === 'undefined'
foo === undefined
foo === void 0
其他任何事情实际上(严格地)都没有检查未定义的值(包括直接将值与字符串'undefined'
进行比较)。
答案 1 :(得分:2)
在您的第一个if语句中,qData['osType']
评估为undefined
,但您的比较是检查undefined == "undefined"
。字符串文字有一个值,因此不等于undefined
。
在第二个if语句中,typeof qData['osType']
求值为字符串"undefined"
,因此表达式求值为true
并执行代码块。
答案 2 :(得分:1)
我想
qData['osType'] == 'undefined'
必须重写为
qData['osType'] == undefined
我更愿意检查
if(!qData.osType)