del*_*les 2 javascript firefox google-chrome
我不知道为什么,但下面的代码适用于Firefox,但不适用于谷歌Chrome,为什么?这应该是标准的JS.
status = parseInt($('#input-status').val());
// status field is exactly equals to 0
if (status === 0) {
// do something, in Firefox the code reaches here, in Chrome NOT !
}
Run Code Online (Sandbox Code Playgroud)
以下是如何在html中定义#input-status:
<input type="hidden" id="input-status" name="input-status" value="00">
Run Code Online (Sandbox Code Playgroud)
在Chrome中,代码仅在我替换=== by ==时才有效.
有任何想法吗 ?
我不确定为什么会这样,但我可以像这样重现它:
status = parseInt($('#input-status').val(), 10);
test = parseInt($('#input-status').val(), 10);
console.log(typeof status); // string
console.log(typeof test); // number
Run Code Online (Sandbox Code Playgroud)
我猜status是由浏览器预定义的,无法解析.要使其工作,请使用var在当前范围中定义新变量:
var status = parseInt($('#input-status').val(), 10);
if (status === 0) {
// this also works in chrome
}
Run Code Online (Sandbox Code Playgroud)
编辑
console.log(window.status === status); // true
Run Code Online (Sandbox Code Playgroud)
它似乎status是window.status对象的引用,它改变了浏览器中的状态栏.并且有意义的是,这不能被解析为数字.
@ Xotic750指出:
是的,在Chrome上,只要将全局变量设置
status/window.status为任何值,window.status = {}它就会将其转换为字符串{value: "[object Object]", writable: true, enumerable: true, configurable: true}jsfiddle课程:不要使用全局变量,使用var它们使它们在本地作用域