严格禁止在node.js中使用这个
使用后“使用严格”语句在我的JS文件不允许我之后IST级使用JavaScript 这个
'use strict'
module.exports = {
a: function() {
var self = this //works fine upto this level
var name = 'atul';
function b() {
this.name = name; //gives me error as can not set property name of undefined
}
}
}
这和Javascript:
这引用了调用对象的例子:
var x = {name: "x", alphabet: function(){return this;}};
x.alphabet(); // in this line, x is the calling object
这会向你显示对象本身。
所以当你这样做时:
...
a: function() {
var self = this //works fine upto this level
var name = 'atul';
function b() {
this.name = name; //use strict is trying to tell you something
}// you won't have a calling object for this function.
}
...
use-strict说:这个函数甚至不是一个对象属性或方法 。 因为它不是一个方法,它的这种将指向全局对象,导致容易出错的发展。
如果你想以这种特定的方式使用你的代码。
module.exports = {
a: {
name: 'atul';
b: function (name) {
this.name = name; // now you have a as the property which can be called by an object a.
//To be used as OBJECT.a.b();
}
};
};
this
是未定义的,因为它不是自动绑定到严格模式下的对象。
首先,以严格模式传递给函数的值不会被强制为一个对象(又名“盒装”)。 对于一个正常的函数,这总是一个对象:要么提供的对象,如果用一个对象赋值this来调用; 如果使用布尔值,字符串或数字调用此值,则装箱; 或者全局对象如果使用undefined或null调用。 (使用调用,应用或绑定来指定特定的这一点。)不仅自动装箱成为性能成本,而且暴露浏览器中的全局对象也是一种安全隐患,因为全局对象提供对“安全”JavaScript环境功能的访问必须限制。 因此,对于一个严格的模式函数,指定的这个不会被装入一个对象中,如果未指定,这将是未定义的
阅读更多的MDN
链接地址: http://www.djcxy.com/p/94907.html上一篇: use strict not allow use of this in node.js
下一篇: Why is my variable undefined inside the Underscore.js each function?