Javascript chrome处理未定义是否有不同?
我的Asp母版页包含以下代码: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代码)正在声明但值为
<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,谢谢你指出这一点。为了避免误解,我更新了答案:)我很高兴你发现这些片段很有用。不要担心检查答案是否被接受。我也很欣赏上面的投票:)有时候一篇更详细的文章比其他文章需要更多的时间。祝你玩得愉快,谢谢。答案中的第一句话就是关键。你可以先提交你的简短答案,然后编辑详细说明:-)