WEB开发网
开发学院网页设计JavaScript 高质量JavaScript代码书写基本要点 阅读

高质量JavaScript代码书写基本要点

 2010-10-25 12:58:02 来源:WEB开发网   
核心提示:考虑下面这个例子,这里仅un作为全局变量污染了命名空间,高质量JavaScript代码书写基本要点(12),console.log(typeof un); // "undefined"console.log(typeof deux); // "undefined"console.

考虑下面这个例子,这里仅un作为全局变量污染了命名空间。

console.log(typeof un); // "undefined"
console.log(typeof deux); // "undefined"
console.log(typeof trois); // "undefined"

var jsstring = "var un = 1; console.log(un);";
eval(jsstring); // logs "1"

jsstring = "var deux = 2; console.log(deux);";
new Function(jsstring)(); // logs "2"

jsstring = "var trois = 3; console.log(trois);";
(function () {
  eval(jsstring);
}()); // logs "3"

console.log(typeof un); // number
console.log(typeof deux); // "undefined"
console.log(typeof trois); // "undefined"
另一间eval()和Function构造不同的是eval()可以干扰作用域链,而Function()更安分守己些。不管你在哪里执行Function(),它只看到全局作用域。所以其能很好的避免本地变量污染。在下面这个例子中,eval()可以访问和修改它外部作用域中的变量,这是Function做不来的(注意到使用Function和new Function是相同的)。

(function () {
  var local = 1;
  eval("local = 3; console.log(local)"); // logs "3"
  console.log(local); // logs "3"
}());

(function () {
  var local = 1;
  Function("console.log(typeof local);")(); // logs undefined
}());
 


上一页  7 8 9 10 11 12 13 14 15 16 17  下一页

Tags:高质量 JavaScript 代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接