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);

相关文章

  • 发现•分享—2019-01-17

    文章 JS JS 异步编程六种方案 JS基础—原型对象的那些事(一) JS基础—原型对象的那些事(二) CSS 综...

  • js基础(二)

    引用 引用:是一个指向对象实际位置的指针。 函数重载和类型检查 在java语言中直接支持函数的重载,但在js中没有...

  • JS基础(二)

    2018.05.13 11.JavaScript 对象 JavaScript对象是拥有属性和方法的数据,几乎所有的...

  • js基础(二)

    Array for in 和for on for in 得到的是数组的索引 而for of 得到的是数组元素 sl...

  • JS基础二

    1. 引用类型有哪些?非引用类型有哪些 引用类型:对象、数组、函数、正则;指的是那些保存在堆内存中的对象,变量中保...

  • JS基础二

    对象 创建 第一种 new Object() 第二种 创建一个函数去创建对象 第三种 构造函数 this和new ...

  • js基础(二)

    第五天 02-语言基础-第02天{语句、数组} 第五天for循环打印直角三角形打印99乘法表while循环do w...

  • JS基础(二)

    判断数据类型、非数值的转换、相等与全等、break与continue、void 0 与undefined type...

  • JS基础(二)

    一、流程控制语句 关系比较运算 分支结构 循环结构for 循环 break 和 continue 死循环 遍历 模...

  • JS基础(二)

    // 值的比较 // 比较结果为 Boolean 类型 // 所有比较运算符均返回布尔值: // true —— ...

网友评论

    本文标题:js基础(二)

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