我无法理解这个JavaScript语句中的括号
我无法理解下面JavaScript语句中的括号:我无法理解这个JavaScript语句中的括号,javascript,parentheses,Javascript,Parentheses,我无法理解下面JavaScript语句中的括号: ({go_go: 'go'}); 这里的()是什么意思 我知道函数中的()表示此函数是匿名的。就像下面的代码一样。是这样吗 (function () { alert('something'); })(); 谢谢大家! 在这个文本示例中,它们没有任何用途,但通常用于封装表达式-特别是,用于确保将参数的内容作为表达式而不是语句来读取 当人们使用eval反序列化JSON格式的数据时,您会看到类似的情况。例如,他们可能会收到以下格式的字符串:
({go_go: 'go'});
这里的()
是什么意思
我知道函数中的()
表示此函数是匿名的。就像下面的代码一样。是这样吗
(function () {
alert('something');
})();
谢谢大家! 在这个文本示例中,它们没有任何用途,但通常用于封装表达式-特别是,用于确保将参数的内容作为表达式而不是语句来读取 当人们使用
eval
反序列化JSON格式的数据时,您会看到类似的情况。例如,他们可能会收到以下格式的字符串:
var s = '{"go_go": "go"}';
…并使用此命令对其进行反序列化:
var o = eval('(' + s + ')');
这是解决某些问题的老办法,但最好使用适当的JSON解析库,如上面列出的三个库中的任何一个。(Crockford是JSON的发明者。)有一个做一些正则表达式来检测各种格式错误的JSON内容,然后使用eval
,还有两个根本不使用eval
。(当处理来自不可信源的JSON时,我永远不会使用eval
。我想这回答了你的问题
不过,如果代码中只有一个普通的对象文本,就不需要它们
在函数表达式中,外部的
()
不会使函数匿名(它已经匿名了,因为它没有名称)。但是,要在定义匿名函数后立即执行它,它们是必需的,因为function(){}()代码>无效。有些人习惯用括号括住JSON对象
var jsonObject = ({go_go: 'go'});
与
var jsonObject = {go_go: 'go'};
他们这样做的原因是,如果通过AJAX调用检索JSON对象,通常需要使用括号来防止常见的解析错误
以下代码行通常会导致无效标签错误:
var jsonObject = eval(stringOfJson);
这通常可以通过以下方式解决:
var jsonObject = eval( "(" + stringOfJson + ")" );
最后,将直接函数包装在括号中的实践应该如下所示
(function () {
alert('something');
}());
使用括号的唯一原因是它使立即函数更加明显(如www.jslint.com推荐的!)谢谢您的回复!你的评论很有帮助。我还检查了expression语句的语法图。现在我得到了答案