js基础(二)

作者: 李华炎 | 来源:发表于2018-04-11 12:32 被阅读0次

    引用

    引用:是一个指向对象实际位置的指针。

    // 1. 多个变量引用同一个对象,只要修改对象,多个变量引用的内容就被修改
    var obj = new Object();
    var objRef = obj;
    
    
    // 2. 修改对象的引用
    var items = new Array('one', 'two', 'three');   // 将 items 置为字符串数组
    var itemsRef = items;               // 将 itemsRef 置为 items 的引用
    items = new Array('new', 'Array');  // 将 items 置为一个新的对象
    
    console.log(items != itemsRef);     // true
    console.log('items: '+items);       // new,Array
    console.log('itemsRef: '+itemsRef); // one,two,three
    

    函数重载和类型检查

    在java语言中直接支持函数的重载,但在js中没有直接支持函数重载的特性。js中要实现函数的重载必须要满足两个条件。第一个就是需要有判断传入的参数的数量,第二个就是需要判断传入的参数的数据类型。

    
    

    拓展原型对象

    由于forEach、map都是ECMA5新增数组的方法,所以ie9以下的浏览器还不支持,可以从Array原型扩展可以实现该功能,例如forEach方法:

    if (typeof Array.prototype.forEach != "function") {
        Array.prototype.forEach = function() {
            /* 实现 */
        };
    }
    

    js代码执行过程

    JavaScript代码在预解析阶段,会对以var声明的变量名,和function开头的语句块,进行提升操作

    js代码在执行时分为两个阶段

    1. 预解析阶段(变量和函数提升)
    2. 执行阶段

    函数声明和函数表达式有什么不同?

    函数声明会被提升到最前面,连同函数体;

    函数表达式只会提升变量,不提升函数体;

    变量提升

    1. 提升被var声明的变量
    2. 只提升变量名不提升值

    函数提升

    1. 同名函数,后面的函数会替换前面的函数
    2. 函数和变量同名,只会提升函数,忽略变量
    //变量和函数同名
    //在提升的时候,如果有变量和函数同名,会忽略掉变量,只提升函数
    
    // 预解析前
    console.log(foo);
    function foo(){}
    var foo = 2;
    console.log(foo);
    
    //预解析后,提升后的代码
    function foo(){};
    console.log(foo);
    foo=2;
    console.log(foo);
    

    相关文章

      网友评论

        本文标题:js基础(二)

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