js学习笔记2

  1.   js中不存在块级作用域。即循环内部定义的变量在循环外也可以访问。
  2.   do-while 循环是后测试循环。while循环和for循环是前测试循环。switch语句在比较值(case:后的表达式)的时候用的是全等操作符(===)。
  3.   在函数中 return 之后的语句不会被执行。js中函数不介意传递进来多少个参数,也不在乎参数的类型,多传了不影响,少传了默认为 undefined。
  4.   js 的函数不存在函数重载,如果定义了两个同名的函数则名字只属于后定义的函数。只能给引用类型动态的添加属性,基本类型不能这么做。
  5.   变量的赋值
    1.   基本类型赋值会在变量对象上创建一个新值,和之前的值不会相互印影响.
    2.   引用类型赋值传递的是指针,将一个引用类型赋值给另一个引用类型时,他们指向的是堆中的同一个对象,对这个对象的修改会相互影响。
  6.   函数中参数的传递都是值传递,但是参数传入引用类型的时候如果不对参数重新进行赋值则会对函数外部传入的对象产生影响(恰恰可以说明是值传递而不是传地址)。因为指向的是堆中的同一个对象。
  7.   执行环境和作用域
    1.   一个执行环境的代码执行完毕之后会执行环境会销毁,其中对应的变量和函数也会销毁。
    2.   每个函数都有自己的执行环境,当执行流进入下一个函数时,函数的环境会被推入到一个环境域中。
    3.   作用域链:内部环境可以通过作用域链访问所有的外部环境。
    4.   js不存在块级作用域,所以花括号{}封闭的代码没有自己的执行环境。
    5.   使用 var 声明的变量会自动被添加到最近的执行环境中,不是用 var 定义的变量为全局变量(不推荐这么使用,可读性地不知道是否为全局变量)。
  8.   查询标识符顺序:由下向上逐级查询,如果局部环境中存在同名标识符就不会使用父环境中的标识符。
  9.   局部环境只在函数执行的过程中存在。
  10.   解除引用:局部变量会在离开执行环境时自动被解除引用,即设置为null。
  11.   js创建对象
    1. 1 var person =  new Object();
      2 
      3 var person = {};
      4 
      5 //两种方式都可以创建对象。 使用构造函数 和  对象字面量表示法。
  12.   js访问对象可以使用点表示法和方括号表示法。使用方括号的时候访问属性需要以字符串的形式存放在放括号中,js 对象的属性名称会将数字转为字符串。
  13.   表达式上下文和语句上下文,对象字面量表示法的 {} 是表达式上下文它期待的是一个值,if 语句后的 {} 是表语句上下文
posted @ 2019-04-10 21:31  不要西红柿  阅读(100)  评论(0编辑  收藏  举报