TongtongGitHub / Blog

个人随笔,欢迎交流
0 stars 0 forks source link

Sticky Footer #2

Open TongtongGitHub opened 7 years ago

TongtongGitHub commented 7 years ago
  1. JS组成:核心ECMAScript,文档对象模型DOM,浏览器对象模型BOM。

  2. 元素,在不支持或者禁用js的浏览器中显示替代内容。
  3. 语法:

    • JS一切变量,函数名,操作符等都区分大小写。
    • "use strict"指示编译器使用严格模式。
    • 推荐每行后面加";"。
    • 推荐每个函数都加大括号。
  4. 函数内定义的变量是局部变量无法在函数外访问,但是如果不是用var关键字,变量默认为全局变量,可以在外部访问,但不建议这样使用。

  5. JS共有五种简单数据类型和一种复杂数据类型Object:

    • Undefined 只有“undifined”一个值,使用var声明变量但没有初始化,会自动付给undefined值。
    • Null 只有“null”一个值。null值表示一个空对象指针,因此“typeof”检测 null 值会返回 object 类型。将变量初始化为null,使用时用这个变量保存一个对象。检查这个变量有没有保存对象,只需要判断是否为null。
    • Boolean
    • Number 浮点数内容占用空间是整数的两倍,因此小数点没有数字后者数字为0会自动转换为整数。极大或者极小的数字使用e表示法。3.125e7 = 31250000。3e-7 = 0.0000003。JS等符合IEEE-754标准的语言,浮点数精度都存在问题,因为有些小数无法用二进制精确表示。因此:1.0-0.9 == 0.1是 false。0.1 + 0.2 == 0.3 是 false。使用toFixed(digits) 方法设置精度可以解决问题:parseFloat((0.1 + 0.2).toFixed(10)) 输出结果为0.3。NaN是一个特殊的数值,表示一个本来要返回数值的操作未返回数值类型。isNaN()。
    • String
    • Object JS对象就是一组数据和功能的集合,通过new操作符和对象类型来创建。所有Object实例都会继承Object的属性和方法。
  6. === !== 会比较数值和类型。

  7. label 语句,用的比较少。with语句不建议使用。

  8. 函数的参数内部使用数组表示。可以不是用命名的参数而使用arguments对象访问这个数组。由于函数没有签名,因此无法真正的重载,如果定义两个相同的函数,后者会覆盖前者。

  9. 基本数据类型值是指简单数据段,而引用数据类型值指的是对象,后者可以添加删除属性和方法。引用类型数据的值实际上是一个指针,var obj1 = new Object(); var obj2 = obj1; 两个变量指向同一个对象,改变其中一个变量,另一个也会改变。

  10. 函数的参数都是按值传递的,传递基本数据类型的值时,被传递的值会被赋值给一个局部变量。当对象作为参数时,函数会将对象的值,也就是指针复制给这个局部对象,虽然是按值传递,但是两个变量指向同一个对象,改变内部局部变量也会改变外部对象。

          function setName(obj){
               obj.name = "a";
               obj = new Object();
               obj.name = "b";
          }
          var person = new Object();
          setName(person);
          alert(person.name); // 输出a
      obj变量和person是两个变量,当obj指向一个新的变量时,操作将不再影响外部变量,因此参数是按值传递的。
  11. JS只有全局作用域和函数内部局部作用域哦,没有块级作用域(if,for等语句没有单独作用域,都属于函数作用域哦)。因此for循环内部的变量可以在for循环外部访问。

          for( var i = 0; i < 10; i++) {
              ....
          }
          alert( i ); //输出 10
  12. 局部变量当函数结束时后自动被垃圾收集,全局变量可以设置为null,然后被垃圾回收,这样可以有效的回收内存。

  13. 定义对象有两种方式,new Object() 和var person = { name: "a", age: 12 };