Visual Studio的AngularJS模板看起来像
(function () {
'use strict';
angular.stuff ...
})();
创建函数并调用它的重点是什么?出了什么问题:
'use strict';
angular.stuff ...
答案 0 :(得分:2)
它完全取决于angular.stuff是什么,但一般的想法是避免使用随机全局变量来污染你的范围。
它通常称为立即调用函数表达式(IIFE),它意味着您可以在其中定义所需的任何变量,而不必担心它们会在单独的范围内导致问题,因为它们的存在将仅限于该函数。
答案 1 :(得分:1)
@echo off & setlocal enabledelayedexpansion
set /a "sizelimit = 1 << 30" & rem // 1GB
rem // GUI folder chooser
rem // http://stackoverflow.com/a/15885133/1683264
set "psCommand="(new-object -COM 'Shell.Application')^
.BrowseForFolder(0,'Please choose a folder.',0,0).self.path""
for /f "usebackq delims=" %%I in (`powershell %psCommand%`) do set "folder=%%I"
if not defined folder goto :EOF
rem // get volume blocksize to determine each file's size on disk later
rem // http://stackoverflow.com/a/30894749/1683264
for %%I in ("%folder%") do for /f %%J in (
'wmic volume where "driveletter='%%~dI'" get blocksize /value'
) do 2>nul set /a %%J
set /P "=Enumerating files in %folder%... "<NUL
rem // use "/a:-d" switch to specify *all* files, including hidden and system
for /f "delims=" %%I in ('dir /s /b /a:-d "%folder%"') do (
rem // check individual file to avoid math exceeding 32-bits
if %%~zI geq !sizelimit! goto readOnly
set /a "sizelimit -= ((%%~zI - 1) / blocksize + 1) * blocksize"
)
echo Size limit not exceeded.
goto :EOF
:readOnly
echo Setting to read-only.
attrib +r "%folder%" /sd
关键字的变量,它将成为一个全局变量。即使var
不允许在没有'use strict';
关键字的情况下声明obj,也不会严格执行。 IIFE防止不必要的变量溢出范围。使用IIFE还有许多其他好处。在Benefits of IIFE 上查看此文章
最初的IIFE是由Ben Alman在他的博客中提出的,这是一本很好的读物。 Ben's Blog on IIFE