我环顾四周,并没有找到任何人提出这个问题,我觉得有点令人惊讶。也许我在这里遗漏了一些东西,但我有以下代码:
return $type_cnts ? JSON.parse($type_cnts)[premType] : 0;
我的投掷
Uncaught ReferenceError: $type_cnts is not defined
不应该$type_cnts
未定义的事实使其成为假,从而使三元运算符返回零?
答案 0 :(得分:1)
不,当您尝试访问它们时,未声明的变量会抛出ReferenceError
。但是,如果声明变量没有值,
var $type_cnts;
那么你的三元运算符会起作用:
$type_cnts ? JSON.parse($type_cnts)[premType] : 0; // 0
此外,当您尝试访问对象时,未定义的对象属性不会抛出错误(常识)。这适用于window
对象,因此如果您将代码更改为
window.$type_cnts ? JSON.parse($type_cnts)[premType] : 0; // no error
甚至没有声明$type_cnts
,那么你的代码就不会抛出错误。