我有时会看到像这样的JS结构:
var foo = (function(){ return some_expression; })();
这可能是什么原因?这与更简单的方式有什么不同:
var foo = some_expression;
我碰巧遇到了这样一个例子here(window.requestAnimFrame = ...
代码),但我在很多其他地方都看到了它。
我知道在lambda函数中包装东西的一个原因是保持变量是局部的,但这并不适用于这个特定的例子。
答案 0 :(得分:1)
并非您的情况似乎有任何差异,但在ECMAScript 5之前,switch (error.constructor) {
case NotAllowedError:
return res.send(400);
case NotFoundError:
return res.send(404);
default:
return res.send(500);
}
是public static void printRows(String id, String desc, int fee) {
System.out.printf("\n| %s | %-20.20s| %,8d|", id, desc, fee);
while(desc.length()>20){
desc=desc.substring(20);
System.out.printf("\n| | %-20.20s| |", desc);
}
System.out.printf("\n---------------------------------------");
}
对象的属性并且是可写的,因此undefined
将替换其值。这意味着,只要这行代码下面的任何程序试图检查这样的东西 -
window
一个人会得到错误的结果。
为了避免这种情况,使用了这样的编码模式 -
undefined = "123"
但是,这是ES5之前的版本。所以,它不再重要了