Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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 - Fatal编程技术网

Javascript 立即调用的函数表达式和自动分号插入

Javascript 立即调用的函数表达式和自动分号插入,javascript,Javascript,我做了一些关于工作原理的小研究。偶然发现了一个行为,我认为这与机制有关。下面是一些代码示例,它们很容易解释 此块将成功执行: !function (){}() ^function (){}() 这不是: ^function (){}() !function (){}() 作为取代基!您可以使用+、-和~。^的替换项可能是&、*、 有谁能给出比我更好的解释,这就是ASI在JavaScript中的工作原理。?我必须承认,这可能是完全错误的。嗯,第二个例子失败了,因为!是一元数,而^is bina

我做了一些关于工作原理的小研究。偶然发现了一个行为,我认为这与机制有关。下面是一些代码示例,它们很容易解释

此块将成功执行:

!function (){}()
^function (){}()
这不是:

^function (){}()
!function (){}()
作为取代基!您可以使用+、-和~。^的替换项可能是&、*、


有谁能给出比我更好的解释,这就是ASI在JavaScript中的工作原理。?我必须承认,这可能是完全错误的。

嗯,第二个例子失败了,因为!是一元数,而^is binary接受2个操作数。至于其余的,我认为链接的答案涵盖得很好,所以我不确定你不清楚的是什么。你是说关于ASI的第二个链接?还抓着呢。是的,^取两个操作数,与&和*相同,但逗号呢?逗号也取两个。你可以在这两个地方使用+和-,因为它们都有一元和二元形式。这就是为什么道格拉斯·克罗克福德坚持并不要忘记分号的原因。所有这些,很多很多的文本,指导和规则,一种思想。只要加上该死的分号,你就不用处理这些事情了。ASI是愚蠢和邪恶的——因为你是人类,除了做你真正的项目之外,还必须记住所有这些事情。再说一次:只需获得;没有其他问题了。是的,你可以这样做。非常适合那些没有真正的编程项目并且喜欢生活在假想世界中的人:-谢谢Dave,我现在知道了@莫尔:我总是这样做:虽然更好地理解背后的东西永远不会有伤害。