为什么在js上做这种烂设计?这样设计自动插入分号是不是有什么特别的原因?这是我的代码,它不适用于js中的chrome:(function(){console.log("abc");})()(function(){console.log("123");})();这里是错误:UncaughtTypeError:(intermediatevalue)(...)isnotafunction我知道这段代码的正确版本是:(function(){console.log("abc");})();(function(){console.log("123");})();我就是想知道为什么js语法设计的这么
今天我偶然发现了这个javascript片段。varx=5,y=6;x++yalert(x+""+y);我想知道为什么这不会引发语法错误以及为什么最后y是7?如果有的话,这个奇怪的片段有什么用?JSFiddlehere 最佳答案 这是由于自动插入分号。分号在JavaScript中不是可选的。它们通过让运行时为您添加它们来模拟可选。解析器在这方面只能做得很好。基本算法是“如果该行是一个有效语句,则在其后添加一个分号并执行它,如果不是,则继续执行下一行”解析器将该代码转换为:varx=5,y=6;x;++y;alert(x+""+y);
我刚刚在Mozilla网站上看到这段代码,虽然对我来说它看起来很糟糕,但我可能不熟悉它的用法:for(;k分号在循环开始时是如何工作的?完整代码是here. 最佳答案 第一部分是用于初始化变量的initial-expression(参见forconstruct):for([initial-expression];[condition];[final-expression])statement在这种情况下,方括号表示它是可选的。因此,如果您没有要初始化的变量,则无需编写任何初始化表达式。就像在for循环之前初始化k的情况一样:vark
由于我现在工作的地方发生了一场“宗教war”,我决定研究一下javascript的ASI特性的历史。但我无法找出为什么以及何时将ASI引入javascript。它似乎一直是一个特性,但是有两种方法可以终止javascript中的语句是否有特定原因?一些消息来源将ASI描述为一种纠错功能,这意味着省略分号是不好的做法。依赖ASI对性能有影响吗?我个人更喜欢分号,因为它使意图更加明确,但个人偏好在任何严肃的讨论中都不是一个可行的论据。 最佳答案 好问题!BrendenEich最初设计了JavaScript编程语言,我认为可以公平地说他会
在Chrome版本^72中,如果我运行以下JavaScript则没有错误。{prop:p}={prop:'prop'}>>{prop:'prop'}所以这行代码被解释为表达式语句,出乎意料。但如果我运行相同的代码并在末尾添加分号,它会按预期运行。{prop:p}={prop:'prop'};>>UncaughtSyntaxError:Unexpectedtoken=这是预期的,因为初始的{告诉JavaScript引擎它是一个代码块,除非我们用括号消除歧义。为什么会出现分号而不是没有分号? 最佳答案 Whydoesthisoccurw
下面的jQuery在函数后有或没有分号。为什么?jQuery(document).ready(function(){jQuery("#red").treeview({animated:"fast",collapsed:true,control:"#treecontrol",persist:"cookie"})});它适用于所有浏览器。这不会导致错误吗? 最佳答案 JavaScript实际上并不需要分号。这只是惯例。http://inimino.org/~inimino/blog/javascript_semicolons我建议使用分
希望比我聪明的人能快速帮助解决这个问题。我有带有分号分隔符的csv文件。它无法阅读标题:d3.csv("file.csv",function(error,data){data.forEach(function(d){d.date=parseDate(d.date);d.value2=+d.value2;d.value1=+d.value1;});我尝试添加类似data.replace(/\s*;\s*/g,",")的内容,但没有用。感谢您的帮助。 最佳答案 让我们将我的评论转换为答案,这样就不会无人回答:假设您的值由分号分隔(从技术
上周我将AptanaStudio更新到最新版本(AptanaStudio3,内部版本:3.4.2.201308081805)。现在到处都显示警告,提示我的JS文件中缺少分号。我知道这些在JS中是可选的,在某些情况下几乎没用,这给了我一个“缺少分号”警告:varLogLevels={debug:4,info:3,warning:2,error:1,none:0}所以,我的问题是:是否有一种方法可以仅针对Aptana中的Javascript删除此警告? 最佳答案 我建议始终使用分号作为Kevin在他的评论中所说的良好做法,但要回答您的问
我正在尝试将Symfony2应用程序置于生产模式。除了压缩的单个JavaScript文件导致错误并使站点无法正确呈现之外,一切都运行良好。我通过浏览器上的调试控制台找到了这个:UncaughtTypeError:undefinedisnotafunctionUncaughtTypeError:Object[objectObject]hasnomethod'treeview'第一个错误是指jQuery插件TreeView是指jQuery的插件,它呈现树状目录结构。另一方面,它在开发模式下运行良好,因为它不进行压缩,它只是一个接一个地包含每个文件。有人可以帮我解决这个问题吗?
这个问题在这里已经有了答案:WhenshouldIuseasemicolonaftercurlybraces?(8个答案)关闭7年前。我碰巧遇到了以下奇怪的情况:其中一个网络调用返回了这样的响应:window.function1=function(){console.log('function1');}window.project='test';但是当下面的脚本被评估时,它返回一个错误UnexpectedIdentifier当在function1定义之后添加semi-colon时,这个问题得到解决所以正确的解决方法是:window.function1=function(){consol