2

次のコード:

(function() {
 var hello = function(name) {
  alert('Hello, ' + name);
 }
 hello('New user');
})();

withADVANCED_OPTIMIZATIONSは次のようにコンパイルされます。

alert("Hello, New user");

しかし、このコード:

(function() {
 var hello = function(name) {
  alert('Hello, ' + name);
 }
 hello.a = 5;
 hello('New user');
})();

次のようにコンパイルされます。

function a(b){alert("Hello, "+b)}a.a=5;a("New user");

なぜ無視できないのhello.a = 5ですか?

(コンテキスト外では使用できません。 no eval、 no []、および noはありませんnew Function()。)

4

2 に答える 2

0

組み込み関数の周りにラッパーを書くことで、コンパイラがこれらを最適化するのを助けることができます:

function myalert(name){alert('Hello, ' + name)}
(function() {
 var hello = function(name) {
  myalert(name);
 }
 hello.a = 5;
 hello('New user');
})();

プロデュース:

alert("Hello, New user");

document.createElement()これは、難読化やある程度の縮小化 (圧縮されていない場合)など、一般的に使用されるものをラップする場合にも役立ちます。

于 2016-03-02T15:47:50.607 に答える