为什么我需要将代码包装在立即调用的函数表达式中?
Why I need to wrap the code in immediately invoked function expression?
1) 为什么我需要将下面提到的代码包装在 (function(){})();
中,否则它会在 JS linting 期间抛出错误,并且 2) 如果将 "use strict";
放在 [=11] 之上,我也会收到错误=] 我想的是把 "use strict";
放在页面的第一行。
请告诉我这两种行为。
我的工作代码-
(function(){
"use strict";
// Constructing constructor function
// whose purpose is to create new
// Person Objects
var Person = function(name) {
this.name = name || "TestUser";
this.hobbies = [];
};
Person.prototype.setHobby = function(hobby) {
this.hobbies.push(hobby);
};
Person.prototype.getHobbies = function() {
return this.hobbies;
};
exports.Person = Person;
var peter = new Person('peter');
peter.setHobby('Gambling');
peter.setHobby('Street Fighting');
peter.setHobby('Smoking');
peter.getHobbies();
})();
使用
/*jshint node: true */
在文件的顶部。即使删除了 IIFE,它也会以优异的成绩通过 jshint。
我不会推荐 jslint。你将用你的余生与它作斗争并调整你的代码让它闭嘴。
1) 为什么我需要将下面提到的代码包装在 (function(){})();
中,否则它会在 JS linting 期间抛出错误,并且 2) 如果将 "use strict";
放在 [=11] 之上,我也会收到错误=] 我想的是把 "use strict";
放在页面的第一行。
请告诉我这两种行为。
我的工作代码-
(function(){
"use strict";
// Constructing constructor function
// whose purpose is to create new
// Person Objects
var Person = function(name) {
this.name = name || "TestUser";
this.hobbies = [];
};
Person.prototype.setHobby = function(hobby) {
this.hobbies.push(hobby);
};
Person.prototype.getHobbies = function() {
return this.hobbies;
};
exports.Person = Person;
var peter = new Person('peter');
peter.setHobby('Gambling');
peter.setHobby('Street Fighting');
peter.setHobby('Smoking');
peter.getHobbies();
})();
使用
/*jshint node: true */
在文件的顶部。即使删除了 IIFE,它也会以优异的成绩通过 jshint。
我不会推荐 jslint。你将用你的余生与它作斗争并调整你的代码让它闭嘴。