Javascript chrome处理未定义是否有不同?

Javascript chrome处理未定义是否有不同?,javascript,asp.net,google-chrome,undefined,Javascript,Asp.net,Google Chrome,Undefined,我的Asp母版页包含以下代码: <script> if (theForm !== undefined) { // <<== line 746: error theForm.onsubmit = ...bla bla... ; } </script> 我的问题是:这是一种错误的检测名称是否未定义的方法吗?或者Chrome的处理方式有所不同 (注意:Firefox控制台不会报告错误,但仍会停止处理此脚本块的JS代码)正在声明但值为

我的Asp母版页包含以下代码:

<script>
    if (theForm !== undefined) { // <<== line 746: error
        theForm.onsubmit = ...bla bla... ;
    }
</script>
我的问题是:这是一种错误的检测名称是否未定义的方法吗?或者Chrome的处理方式有所不同


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

正在声明但值为
未定义的变量与从未声明的变量之间存在区别。我猜你的情况是后者。为此使用typeof运算符

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

正在声明但值为
未定义的变量与从未声明的变量之间存在区别。我猜你的情况是后者。为此使用typeof运算符

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

消息
Uncaught ReferenceError:未定义表单

应解释为

表单未声明

为什么?? 基本上,变量可以是未定义的,也可以是未声明的

范例

  • 已声明和未定义
  • var foo;//如果要分配一个值(即:var foo=3),那么它就不会是未定义的
    
    console.log(foo)消息
    未捕获引用错误:未定义表单

    应解释为

    表单未声明

    为什么?? 基本上,变量可以是未定义的,也可以是未声明的

    范例

  • 已声明和未定义
  • var foo;//如果要分配一个值(即:var foo=3),那么它就不会是未定义的
    
    console.log(foo)
    typeof
    不是函数,所以不需要括号。@JLRishe我知道,谢谢。但是它们都是一样的,我更喜欢使用它们,因为我觉得它提高了可读性。@code仍然很奇怪,
    if(undeclaredvar)
    会导致引用错误,并且可能
    somefunction(undeclaredvar)
    也会,而
    typeof(undeclaredvar)
    也可以
    typeof undeclaredvar
    可能更清楚地表明它不是一个函数。与硬编码字符串相比,这是一种黑客行为,如果(定义了somevar)
    typeof
    不是一个函数,所以它不需要括号,为什么我们不能只写
    。@JLRishe我知道,谢谢。但是它们都是一样的,我更喜欢使用它们,因为我觉得它提高了可读性。@code仍然很奇怪,
    if(undeclaredvar)
    会导致引用错误,并且可能
    somefunction(undeclaredvar)
    也会,而
    typeof(undeclaredvar)
    也可以
    typeof undeclaredvar
    可能更清楚地表明它不是一个函数。与硬编码字符串相比,这是一种黑客行为,为什么我们不能只编写
    if(defined somevar)
    ?我有案例2,但是运行时引用错误,而不是编译错误。而且,你的回答更快,所以我接受了他的回答,尽管我很欣赏你的代码snippets@Roland,谢谢你指出这一点。为了避免误解,我更新了答案:)我很高兴你发现这些片段很有用。不要担心检查答案是否被接受。我也很欣赏上面的投票:)有时候一篇更详细的文章比其他文章需要更多的时间。祝你玩得愉快,谢谢。答案中的第一句话就是关键。您可以先提交简短的答案,然后进行编辑以详细说明:-)我有案例2,但是一个运行时引用错误,而不是编译错误。而且,你的回答更快,所以我接受了他的回答,尽管我很欣赏你的代码snippets@Roland,谢谢你指出这一点。为了避免误解,我更新了答案:)我很高兴你发现这些片段很有用。不要担心检查答案是否被接受。我也很欣赏上面的投票:)有时候一篇更详细的文章比其他文章需要更多的时间。祝你玩得愉快,谢谢。答案中的第一句话就是关键。你可以先提交你的简短答案,然后编辑详细说明:-)