应该在javascript中支持“_this”而不是“self”?

时间:2016-04-08 15:36:38

标签: javascript angularjs

Airbnb JavaScript Style Guide中,他们提到“保存对此使用的引用_this。”

// bad
function() {
  var self = this;
  return function() {
    console.log(self);
  };
}

// bad
function() {
  var that = this;
  return function() {
    console.log(that);
  };
}

// good
function() {
  var _this = this;
  return function() {
    console.log(_this);
  };
}

然而,我读过几本提到“自我”的书很好。就像AngularJS: Up and Running一样。

<script type="text/javascript">
    angular.module('notesApp', []).controller('MainCtrl', [function () {
      var self = this;
      self.message = 'Hello ';
      self.changeMessage = function () {
        self.message = 'Goodbye';
      };
    }]);
</script>

那么,任何人都可以告诉我使用“_this”而不是“self”的原因吗?

3 个答案:

答案 0 :(得分:1)

这只是个人偏好。但是,最好只在项目的代码库中使用一个选项。所以不要在一个功能块中使用_this,然后在另一个功能块中使用_this ..

答案 1 :(得分:1)

正如其他人所指出的,这纯粹是一种编码风格偏好。我会提出一个建议:如果您的团队代码库有兴趣继续使用词法范围 this,那么请考虑使用 ES6 &# 39; s fat arrow的功能是避免创建不必要的变量。

这当然取决于您的项目是否已准备好实施ES6功能。

答案 2 :(得分:0)

我不会使用self,因为它已经被用作另一个指向window对象的指针。请参阅此处(部分向下),了解使用self类似变量的示例(无需将其作为window.self作为前缀):https://developer.mozilla.org/en/docs/Web/API/Window/self