chrome处理undefined的方式不同吗?

时间:2018-08-14 14:58:29

标签: javascript asp.net google-chrome undefined

我的Asp主页具有以下代码:

<script>
    if (theForm !== undefined) { // <<== line 746: error
        theForm.onsubmit = ...bla bla... ;
    }
</script>

Chrome控制台报告错误:

Uncaught ReferenceError: theForm is not defined   bla.aspx:746

我的问题是:这是检测名称是否未定义的错误方法吗?还是Chrome处理不同的内容?

(注意:Firefox控制台不会报告错误,但仍会按照该脚本块的JS代码停止处理)

2 个答案:

答案 0 :(得分:2)

消息Uncaught ReferenceError: theForm is not defined

应解释为

theForm is not declared

为什么? 基本上,变量可以是undefined(但可以声明),也可以根本不声明。

示例

  1. 已声明并undefined

var foo;        // if a value would be assigned (i.e.: var foo = 3), then it wouldn't be undefined
console.log(foo);

  1. 未声明(它将引发错误)

console.log(foo); // <-- foo was never declared


如何修复它?

像这样使用typeof

  console.log('Is undefined:', typeof foo === 'undefined');

答案 1 :(得分:1)

已声明但变量值为undefined的变量与从未声明过的变量之间有区别。我猜你的情况是后者。为此,请使用typeof运算符。

if(typeof(theForm) !== 'undefined'){ //typeof returns a string