第一章 JavaScript简介

bom(浏览器对象模型)

Browser object model:支持访问和操作浏览器窗口的浏览器对象模型

第二章 在HTML中使用JavaScript

Script标签的解析顺序

  • 只要不包含defer和async属性,script标签都是按需解析。只要当第一个script标签解析完毕后,才会解析第二个srcipt

第三章 基本概念

  • null在逻辑上表示一个空对象指针,因此typeof null的值为object
  • ES并不能保存所有的整数,从MIN_VALUEMAX_VALUE。一旦超出就会变成InfinityInfinity不能参与数字运算
  • isNaN方法可以用于对象,会调用valueOf方法,如果调用失败,会调用toString方法
  • js函数的参数都是使用数组来表示的,因此任何一个函数都可以传入任何多个参数
1
2
3
function sayHi() {
alert("hello" + arguments[0] + arguments[1])
}

第四章 变量,作用域和内存问题

  • 除了undefined,null,boolean,number,string,其他所有类型都是引用类型。引用类型的值都是按引用访问的。(也就是Python里的可变对象)

    1
    2
    3
    var person = new Object()
    person.name = "myl"
    alert(person.name)
  • 在表现上,和python一样,js的函数参数基本类型是值传递,引用类型是引用传递。

    但是实际上,JS的函数参数永远都是值传递。只是创建一个obj的时候,obj也会按引用来访问同一个对象

    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Person:
    pass

    def changeName(p):
    p.name = "heyingliang"

    p = Person()
    changeName(p)
    print(p.name) # heyingliang
    1
    2
    3
    4
    5
    6
    7
    8
    // 新创建一个obj,但是这个obj引用person
    function setName(obj){
    obj.name = "hyl"
    }

    var person = new Object();
    setName(person)
    alert(person.name) // hyl
  • 一般使用typeof判断基本数据类型,使用instanceof判断引用类型

    1
    2
    3
    4
    5
    6
    s = "hyl"
    typeof s

    person instanceof Object
    colord instanceof Array
    pettern instanceof RegExp