JS 拾遗

作者: xuan241 | 来源:发表于2017-05-05 13:26 被阅读7次

    重读阮一峰 《JavaScript 标准参考教程》一书。有沧海拾遗的感觉,偶有收获,记录下来,以便之后查阅...

    JS语法

    变量提升

    1. 只有用var声明变量才会变量提升
    2. 要规避这种特性,可以直接写a = 0,或者用 winsow.a = 0 这种形式
    3. function关键字声明的函数会将整个函数提升到顶部,用 var foo = function () {} 可以只提升foo变量的声明,但函数体还是会留在原地,这样可以避免一些错误

    switch-case语法

    1. 每一个case语句后面都要加break,不然程序还是会往下走
    2. switch-case语法使用的是严格相等的模式

    数组

    1. 数组即对象,不过是拥有有序的键名('0','1',...)
    2. 本质上,数组的下标是字符串。只不过我们写成数字下标时,JS解析器会对数字进行隐式转换
    3. 数组与狭义对象的差别之一是数组的length属性是动态变化的。清空数组的一种方式是arr.length = 0
    4. 给数组添加一些不符合数组规范的属性不会影响它的length属性
    5. 类数组对象也有length属性,但是该属性不是动态的

    强制类型转换

    1. Number()是比parseInt()更加严格的转换
    2. String()可以用来区分狭义对象和数组
    3. Boolean()

    错误处理

    1. error对象使用new Error()构造函数,并传入错误信息message
    2. 三个属性:name、message、stack
    3. throw用于中断程序执行,抛出意外或错误。接收表达式作为参数,可以抛出各种类型的值

    闭包

    1. 作用:①外部读内部的变量 ②闭包的变量不会被回收,可以用来存储变量 ③封装对象的私有属性和方法
    2. 外部函数的内部环境会一直存在,闭包可以看作是函数内部作用域的一个接口
    3. 外部函数每一次执行都会形成新的闭包,该闭包又保留外层函数的内部变量,所以内存消耗挺大,要慎用

    IIFE

    1. function关键字既可以作为语句,也可以作为表达式
    2. ()()是为了让JS解释器将function解析成表达式,后面的小括号是用来传参的。
    3. 还有其他形式的如:(function(){}())、~function(){}()...

    狭义对象

    1. 对象的键名为字符串。我们用对象字面量的方式定义对象,键名可以省略引号
    2. Object.keys(obj)方法返回包含所有键名的数组(该方法可以用来判断一个对象是否为空)
    3. delete obj.xx 删除对象的某个属性
    4. 'xx' in obj 判断对象是否有某个属性(继承过来的属性也被包含)
    5. obj.hasOwnProperty('xx') 判断对象是否有某个属性(不包含继承过来的属性也)

    相关文章

      网友评论

          本文标题:JS 拾遗

          本文链接:https://www.haomeiwen.com/subject/gbojtxtx.html