Jon*_*oss 3 javascript for-loop code-snippets sublimetext3
在Sublime Text 3中,当编写JavaScript时,键入"for"会触发插入两个可能的代码片段之一:
for (... {... (Improved Native For-Loop)
for (var i = Things.length - 1; i >= 0; i--) {
Things[i]
};
Run Code Online (Sandbox Code Playgroud)
和
for (...) {...}
for (var i = 0; i < Things.length; i++) {
Things[i]
};
Run Code Online (Sandbox Code Playgroud)
一段时间以来,已知for 循环的反向迭代具有更好的性能.但这样做意味着每个基于数组的操作都必须向后完成,这会导致代码的可读性降低.所有这些麻烦都只是为了在大多数情况下提高性能.
不幸的是," 改进的Native For-Loop "是第一个建议,并且可能导致一些令人烦恼的情况,当意外选择而不是正常的,可读的循环,不会混淆数组迭代的典型约定.
要删除" 改进的 "for循环片段,请在packages文件夹(Preferences> Browse Packages)中创建一个名为"JavaScript"的文件夹,然后创建一个名为"for - () - {}的文件 - (更快).sublime-代码段"在JavaScript文件夹中.在此文件中,放置以下内容:
<snippet>
<content><![CDATA[$1]]></content>
</snippet>
Run Code Online (Sandbox Code Playgroud)
保存并重新启动Sublime.这将禁用内置的bass-ackwards" 改进 "循环片段建议.此时,只有正常的for (...) {...}代码段才会处于活动状态.
减少不会提供任何性能提升.性能的提高只是因为减少了必须计算数组长度的次数:with for(i=0;i<Things.length;++i),Things.length是为每次迭代计算的; with for(i=Things.length-1; i>=0; --i),Things.length只计算一次.(见这里.)
通过Things.length使用以下语法声明一个新变量来保存值,可以获得这种温和的性能提升:
for (var i = 0, l = Things.length; i < l; ++i) {}
Run Code Online (Sandbox Code Playgroud)
要替换默认的捆绑" 改进 "for循环,我们将上述语法添加到for-()-{}-(faster).sublime-snippet文件中.为确保Things选中两个占位符,我们使用${1:Things}.新的代码段文件内容应如下所示:
<snippet>
<content><![CDATA[for (var i=0, il=${1:Things}.length; i<il; ++i) {
${1:Things}[i];
}]]>
</content>
<tabTrigger>for</tabTrigger>
<scope>source.js</scope>
<description>for (... {... Custom Improved For-Loop</description>
</snippet>
Run Code Online (Sandbox Code Playgroud)
确保代码段正确缩进.请注意,您必须使用制表符而不是空格来缩进.保存并重新启动Sublime.
如果要为另一种语言创建类似的循环,请将内容复制到新文件,并使内容和范围适应该语言.快乐的编码.
这些是我目前使用的一些片段,它们更高级,因为它们使用多个字段(按Tab键在字段之间切换).此外,还有一个通过键入访问的嵌套循环片段forfor.
文件名: for-()-{}-(faster).sublime-snippet
<snippet>
<content><![CDATA[for (var ${1:i}=0, ${1:i}l=${2:Things}.length; ${1:i}<${1:i}l; ++${1:i}) {
${2:Things}[${1:i}];
}]]>
</content>
<tabTrigger>for</tabTrigger>
<scope>source.js</scope>
<description>for (... {... Custom Improved For-Loop</description>
</snippet>
Run Code Online (Sandbox Code Playgroud)
文件名: for-nested-js-(faster).sublime-snippet
<snippet>
<content><![CDATA[for (var ${1:i}=0, ${1:i}l=${2:condition}; ${1:i}<${1:i}l; ++${1:i}) {
for (var ${3:j}=0, ${3:j}l=${4:condition}; ${3:j}<${3:j}l; ++${3:j}) {
${5:statement};
}
}]]>
</content>
<tabTrigger>forfor</tabTrigger>
<scope>source.js</scope>
<description>for(..){for... Faster Nested For-Loop</description>
</snippet>
Run Code Online (Sandbox Code Playgroud)