Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我无法理解这个JavaScript语句中的括号_Javascript_Parentheses - Fatal编程技术网

我无法理解这个JavaScript语句中的括号

我无法理解这个JavaScript语句中的括号,javascript,parentheses,Javascript,Parentheses,我无法理解下面JavaScript语句中的括号: ({go_go: 'go'}); 这里的()是什么意思 我知道函数中的()表示此函数是匿名的。就像下面的代码一样。是这样吗 (function () { alert('something'); })(); 谢谢大家! 在这个文本示例中,它们没有任何用途,但通常用于封装表达式-特别是,用于确保将参数的内容作为表达式而不是语句来读取 当人们使用eval反序列化JSON格式的数据时,您会看到类似的情况。例如,他们可能会收到以下格式的字符串:

我无法理解下面JavaScript语句中的括号:

({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语句的语法图。现在我得到了答案