前端随笔--JavaScript

1、使用 || 来填充默认值,避免对象属性为空报错

2、从undefined获取属性会导致TypeError异常,用&&运算符避免错误,如person && person.firstName ES6支持?.语法,优先使用?. 如 person?.firstName

3、使用hasOwnProperty检查对象独有的属性,这个函数不会检查原型链,如 filght.hasOwnProperty(‘number’)

4、for in对对象遍历,会列出所有属性,包括原型链上的属性,尽量避免for in遍历对象,使用属性名创建一个数组用for遍历

5、通过函数字面量创建的函数对象包含一个连接到外部上下文的连接,称为闭包。

6、闭包作用1:隐藏变量,避免全局污染 作用2:可以读取函数内部的变量 缺点1:导致变量不会被垃圾回收机制回收,造成内存消耗
缺点2:不恰当的使用闭包可能会造成内存泄漏的问题

7、函数调用时除了定义的形式参数,还有两个附加的参数,this和arguments

8、函数的调用方式分为,方法调用、函数调用、构造器调用、apply调用

9、方法调用模式:对象的属性是一个函数,通过函数名()调用,可以通过this访问对象的属性

10、函数调用模式:一个函数并非对象的属性时,是作为函数来调用的,内部函数调用时,this会绑定到全局而不是对象本身,解决方法是在对象定义一个属性that,指向对象本身this,内部函数使用that访问对象

    function add(value1, value2) {
        console.log(value1, value2);
        return value1 + value2
    }

    var Person = {
        value: 12
    }

    Person.person = function () {
        var that = this
        var person = function () {
            that.value = add(that.value, that.value) // that指向Person对象
            // this.value = add(this.value, this.value) // this指向全局的Window对象
        };
        person()
    }


    Person.person()
    console.log(Person.value);
    // console.log(Window.value);

11、构造器调用模式:一个函数结合new前缀使用称为构造器函数,按照约定,函数的名称为首字母开头,一般不推荐使用这种的形式的构造器函数

12、apply调用模式:使用apply调用函数,apply的第一个参数是this,第二个参数是函数参数数组

    var array = [3, 4]
    console.log(add.apply(null, array));

13、函数的附加参数:arguments arguments是一个类似数组的对象,没有数组的方法,arguments对象为传入函数的所有参数

    function add() {
        var sum = 0
        for (let i = 0; i < arguments.length; i++) {
            sum += arguments[i]
        }
        return sum
    }

    console.log(add(1, 2, 3, 4, 5));
    console.log(add(23, 45));

14、函数总会返回值,默认undefined,如果是构造器调用方式,返回的是该新对象

15、异常:通过throw抛出异常(exceptions对象),try包含可能有问题的代码块,catch捕获异常

    function add(value1, value2) {
        if (typeof value1 !== 'number' || typeof value2 !== 'number') {
            throw {
                name: 'TypeError',
                message: 'add need number'
            }
        }
        var sum = 0
        for (let i = 0; i < arguments.length; i++) {
            sum += arguments[i]
        }
        return sum
    }

    try {
        add('seven')
    } catch (e) {
        console.log(e.message);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值