Chrome控制台中的奇怪行为

时间:2012-10-08 05:58:25

标签: javascript google-chrome google-chrome-devtools object-literal

看一下截图...

screenshot

我正在尝试这个的原因是因为我做了一个简单的Google搜索,检查参数是否是一个函数,我发现了这个...

var getClass = {}.toString;
...
function isFunctionA(object) {
    return object && getClass.call(object) == '[object Function]';
}

来源:http://jsperf.com/alternative-isfunction-implementations/4

那么我输入的内容和示例源代码之间有什么区别?为什么Chrome在输入{}.toString时会出错,但在括号内时可以正常工作?

1 个答案:

答案 0 :(得分:4)

语句开头的

{}是不明确的,是空代码块还是对象?该定义通过将其定义为代码块来解决歧义,在语句的开头使用{}作为对象通过将其括在括号中使其成为表达式:({})

另见Why does accessing a property directly on an Object literal throw a SyntaxError?的答案