草庐IT

javascript - 批量修复 JSHints 在项目中发现的缺失分号

根据JSHint,我有一个包含100多个javascript文件的项目,每个文件缺少1-5个分号(结果是多人以不同的约定处理该项目)。我想批量修复所有内容,因为逐个修复不切实际。我发现了这个:https://github.com/jshint/fixmyjs但我看不到只修复分号而不“修复”其他东西(例如制表符->空格)的方法。有谁知道这样做的方法吗?我对它可能导致损坏/引入错误的可能性感到满意。我查看了这些错误,它们看起来很正常。 最佳答案 我真的希望你喜欢这个解决方案。请注意,在解决问题后再次使用jshint进行验证。出于好奇,您

javascript - [] 前没有分号导致 JavaScript 出错

vara=[1,2,3,4];varb=[10,20,30,40];console.log([a,b].length)[a,b].some(function(x){x.push(x.shift())});今天当这段代码导致我非常惊讶[a,b].some(function(x){x.push(x.shift())});^TypeError:Cannotcallmethod'some'ofundefined显然,JavaScript的“自动分号插入”在这里没有按预期工作。但是为什么?我知道你可能会建议在任何地方都使用;来避免类似的事情,但问题不在于使用;是否更好。我很想知道这里究竟发生了什

javascript - IIFE 前的分号有什么用?

这个问题在这里已经有了答案:WhatdoestheleadingsemicoloninJavaScriptlibrariesdo?(6个答案)关闭9年前。我正在检查has.js的代码并对这里的初始分号感到困惑:;(function(g){//code}()(this);据我所知,它什么都不做。它不会将函数放在表达式位置,如()或!做:(function(){}())或!function(){}()。它似乎只是一个空行的换行符。这个分号的作用是什么?强制症渴望在IIFE的开始和结束之间保持对称?:)

javascript - 无法读取未定义的属性 'forEach'

varfuncs=[][1,2].forEach((i)=>funcs.push(()=>i))为什么会产生下面的错误?TypeError:Cannotreadproperty'forEach'ofundefinedatObject.但是,如果将分号;添加到第一行的末尾,错误就会消失。 最佳答案 第一行末尾没有分号。所以这两行跑在一起,它被解释为将funcs的值设置为[][1,2].forEach((i)=>funcs.push(()=>i))表达式1,2变成了2(commaoperator),所以你试图访问一个空数组的索引2:[]

javascript - 使用逗号与分号连接多个语句

在使用缩小的Jquery时,我注意到多个语句由逗号连接。例如event.preventDefault();event.stopPropagation();jQuery.event.trigger(event,data,this[0]);returnevent.result;缩小到:c.preventDefault(),c.stopPropagation(),d.event.trigger(c,b,this[0]);returnc.result我确实看到了类似的问题:JavaScriptvariabledefinition:Commasvs.Semicolons但在这种情况下,显然没有性

javascript - 使用 Gulp 抑制 JSHint 中的分号警告

我目前在我的Gulp工作流中使用JSHint,并希望在使用JavaScript时抑制分号错误。我目前正在使用gulp-jshint。我如何在Gulp中启用“asi”标志来消除错误?我收到的错误类型是:~/bootstrap-4.0.0-alpha/js/src/modal.js:line1,col26,Missingsemicolon.尽管它是有效的JavaScript。任何帮助,将不胜感激!如果有帮助,这是我的Gulp文件://LoadNodeModules/Pluginsvargulp=require('gulp');varconcat=require('gulp-concat')

javascript - 省略分号会影响 JavaScript 的性能吗?

我正在与一位同事讨论JavaScript,同时查看一些片段。我们注意到这些片段在语句末尾缺少;。我们都知道,即​​使行尾没有显示分号,JS也会被正确解释,但我想知道这是否会以某种方式影响评估的性能,因为它是一种解释型语言。 最佳答案 带有空格、分号和注释的javascript文件比较重。这是主要影响。但是你是一名编码员,你必须维护代码,所以这种非常轻微的影响远不如对可读性的不利影响重要。省略分号意味着您知道什么时候可以省略它们。但规则并不是那么简单,学习它们不值得花时间。将分号保留在原处,您将避免错误。如果您想拥有尽可能轻的代码,则

javascript - 放;在函数定义的末尾

为什么将;放在最佳实践中?在函数定义的末尾。例如vartony=function(){console.log("hellothere");};优于:vartony=function(){console.log("hellothere");} 最佳答案 TL;DR:如果没有分号,您的函数表达式可以变成立即调用的函数表达式,具体取决于它后面的代码。自动插入分号很痛苦。你不应该依赖它:vartony=function(){console.log("hellothere");//Hint:thisdoesn'tgetexecuted;};(

javascript - 自动分号插入和返回语句

这个问题在这里已经有了答案:Whydoresultsvarybasedoncurlybraceplacement?(6个答案)WhataretherulesforJavaScript'sautomaticsemicoloninsertion(ASI)?(7个答案)关闭7年前。您可能知道,ECMAscript试图变得聪明,如果您没有显式编写分号,它会自动插入分号。简单的例子functionfoo(){varbar=5returnbar}仍将按预期工作。但是,如果您依赖于此,则有一些注意事项。如果我们像这样重写那个函数functionfoo(){varbar=5return{bar:bar

javascript - 为什么 "3 [1, 2];"在 JavaScript 中返回 undefined?

我查看了GMail执行的一些AJAX调用,我注意到有时调用的返回值以数字开头。示例:(注意第一行后没有分号)3[1,2];如果我将其输入JavaScript控制台,我会返回undefined。但是,如果第二个参数是数字或字符串,我会返回第二个参数。示例:34返回4.我的猜测是他们这样做是为了阻止jsonp类型的攻击,但是,有谁知道正在进行的基础评估是什么?在第二种情况下,我相信在第一行之后“插入”了一个分号,这将使返回4有意义。但是,我想不出第一个表达式返回未定义的原因。 最佳答案 这是因为ASI(自动分号插入)的工作原理。第一条语