JS学习笔记/6.3

2017-06-03  本文已影响0人  Wyyyn

代码块与作用域

顶层作用域声明的变量哪里都可访问,虽然在JS中可以跨越块级作用域,但是这样访问变量容易引起混乱,产生bug,我们应避免跨越块级作用域。在ES6中,新增的let关键字禁止了块级作用域变量的访问,这样可以有效的避免错误发生。

var x=0;
funcyion fun()
{
  console.log(x);
  var x=1;
  x++;
}
fun();

上面这段代码的运行结果为unedefined,在JS中,一个作用域里声明的变量在这个作用域里只用一个指向,因为子作用域里又声明了另一个重名的局部变量x,导致腹肌作用域的变量被覆盖而无法访问。应避免起重名的变量名,使每个作用域都变得严谨。

隐藏参数this

this的指向(在对象中的用法)

遇到的问题

  var robot_1 = {
      name : "bower",
      say : function(){
              console.log(this.name);
          }
  }
  var robot_2 = {
   name : "cup"
  }
  robot_2.say = robot_1.say;
  robot_2.say()

以上代码执行结果为 cup
robot_2的say属性值不应该是经赋值后的robot_1执行say函数的值吗?但是robot_2没有say函数,执行robot_2.say()后的结果为什么会是cup?
——————
robot_1的函数say赋给robot_2,robot_2有了robot_1方法,输出的便是cup。
.....

上一篇 下一篇

猜你喜欢

热点阅读