如果我打开浏览器控制台(在Chrome / Firefox中测试),然后输入:
fs.open
我得到:
false
但是,如果我将两个参数都转换为null == {}
运算符,而键入:
==
我得到:
未捕获的SyntaxError:意外令牌==
图片:
编辑:
尽管question 35812626解决了这一问题并在JS将{} == null
解析为代码块时说明了原因,但它使用的是三等号(严格比较)运算符{}
,而不是双等号{ {1}}。正如用户在下面指出的那样,在代码块之后肯定可以紧跟===
,而不会引起语法错误:
==
这怎么起作用,而我的示例不起作用?
答案 0 :(得分:4)
我认为是因为解释器将{}
解释为代码块而不是对象。
所以您的代码{} == null
原来是一个块的开始和结束,然后一条语句以==
开头,这绝对是语法错误。
但是如果您可以尝试({} == null)
,我认为它应该可以正常运行。
,正如@dhaker {}=={}
指出的,返回false
并非错误。
我发现几乎没有方案返回结果,也很少出错。
以下错误:
{}==null //Uncaught SyntaxError: Unexpected token ==
{}==1 //Uncaught SyntaxError: Unexpected token ==
{}==0 //Uncaught SyntaxError: Unexpected token ==
{}==true //Uncaught SyntaxError: Unexpected token ==
{}==false //Uncaught SyntaxError: Unexpected token ==
{}==true //Uncaught SyntaxError: Unexpected token ==
{}=='' //Uncaught SyntaxError: Unexpected token ==
{}=='hi' //Uncaught SyntaxError: Unexpected token ==
{}==(new Object) //Uncaught SyntaxError: Unexpected token ==
以下返回的结果没有错误:
{}=={} //false
{}==function(){} //false
所以我想这与浏览器如何编译或解释Java脚本有关。
有关详细答案,请检查以下答案。
答案 1 :(得分:3)
我在野生动物园中进行了测试,但事实并非如此。
null是原始变量,null可以位于左侧。
但是用于JavaScript的{}是名称空间。用于创建全局对象。
答案很简单:将{}与等号运算符一起使用是没有意义的。
已更新:
这很清楚:
JavaScript附带的所有内容{没有 分配 。
让我们说:
{x:null}
以及您将得到什么?
什么都没有。您可以再次访问该对象吗?不。
console.log( null == {} );
console.log( {} == null );
console.log( null === {} );
console.log( {} === null );
// Also
var object1 = {'key': 'value'}
var object2 = {'key': 'value'};
console.log(object1 === object2); //false
console.log({} === {}); //false
console.log({} == {}); //false
({}) == null; // little hack ;) false
// {} == null; syntax error !
(typeof {}) == (typeof {});
var A = {};
var B = {};
(typeof A) === (typeof B);
// console.log( (A instanceof "object" ) );
console.log( typeof A );
// This is only correct
console.log(typeof A === typeof B)
console.log(typeof {} === typeof {})
我尝试了这个愚蠢的事情:
{'test':0} .hasOwnProperty('test')
并且我得到了相同的职员(语法错误)。不要那样用它!