未捕获的引用错误:在测试真实性时未定义变量
Uncaught ReferenceError: var is undefined when testing for truthy
所以,我一直使用构造类型来测试变量的存在:
if(foo){
doThings();
}
现在,我得到了一个
Uncaught ReferenceError: foo is undefined
这是一个小提琴
事实上,VaR 甚至从未被宣布过。我的问题是,这是正常行为吗?我已经使用了很多次,我认为这不是第一次不声明变量;我几乎可以肯定我从来没有遇到过这个问题,它只是返回了 false,没有进入状态。
欢迎任何帮助和澄清。
如果尚未声明变量,则尝试引用它将导致引用错误。
如果已声明变量但未赋值,则它将隐式具有值undefined
,并且您的代码将按预期工作。
在您的情况下,会发生以下情况:
- 计算
if
语句 [if (表达式) 语句]- 这涉及计算表达式,该表达式返回引用,如 10.3.1
- 对返回的引用调用 GetValue
- 如果引用不可解析(其值为
undefined
),则抛出引用错误
- 如果引用不可解析(其值为
- 强制引用的值为布尔值
用于确定引用值的算法遍历嵌套词法环境链,直到到达最外层的上下文。当它到达该点并且仍然找不到所提供标识符的绑定时,它将返回一个基值为 undefined
的引用。
当引用的基值undefined
该引用称为"不可解析"时,当引用不可解析时,任何引用它的尝试都会导致(不出所料)引用错误。
检查更新的小提琴。如果您尚未声明变量,则必须检查其类型。
var a = 1;
var b;
try{
if(typeof(c)!='undefined') {
alert("OK");
}
} catch(ex){
alert(ex);
}
小提琴
var
是Javascript中的一个保留关键字。
以下是相应的错误
Uncaught SyntaxError: Unexpected token var
相关文章:
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 测试数组中每个项的内容
- 测试Angular Service解决错误回调中的promise
- 使用Jest测试React Native应用程序
- 为函数代码编写测试
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何使用JS/nightwatchjs并行运行多个测试
- 使用量角器的当前url单元测试的getTitle
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- AngularJS指令单元测试中未定义的函数
- 一个密码测试程序,如果存在空格,它会提醒用户
- 测试角度解析方法
- Protractor:在Iframe中测试非角度应用程序
- 简单类测试未通过
- 如何在Ionic2测试版中包含Ionic.io服务
- 未捕获的引用错误:在测试真实性时未定义变量