JavaScript的数据类型、null 和undefined、原始数据类型和引用数据类型等JavaScript基础知识总结

一、JavaScript里有哪些数据类型,解释清楚null 和undefined,解释清楚原始数据类型和引用数据类型。比如讲一下1 和Number(1)的区别

数据类型:

       undefined,没有定义数据类型

       number,数值数据类型,例如10或者1或者5.5

       string,字符串数据类型,例如”helloworld”

       boolean,布尔类型true|false

       object,对象类型,复杂的一组描述信息的集合

null和undefined的区别:

       1、null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。Null表示“没有对象”,即该处不应该有值。典型的用法是:

(1)作为函数的参数,表示该函数的参数不是对象

(2)作为对象原型链的终点。

       2、当声明的变量还未被初始化时,变量的默认值为undefined

undefined表示“缺少值”,就是此处应该有一个值,但是还没有定义。

(1)  变量被声明了,但没有赋值时,就等于undefined。

(2)  调用函数时,应该提供的参数没有提供,该参数就等于undefined

(3)  对象没有赋值的属性,该属性的值为undefined

(4)  函数没有返回值时,默认返回undefined

原始数据类型(基本数据类型)、引用数据类型:

1、        ECMAScript变量包含两种不同类型的值:基本类型值、引用类型值。

2、        基本类型值:指的是保存在栈内存中的简单数据段。

3、        引用类型值:指的是那些保存在堆内存中的对象,意思是,变量中保存的实际上只是一个指针,这个指针指向内存堆中实际的值。

两种访问方式

4、        基本类型值:按值访问,操作的是他们实际保存的值

5、        引用类型值:按引用访问,当查询时,我们需要先从栈中读取内存地址,然后再找到保存在堆内存中的值。

两种类型复制

 基本类型变量的复制:从一个变量向另一个复制时,会在栈中创建一个新值,然后把值复制到为新变量分配的位置上。

       引用类型变量的复制:复制的是存储在栈中的指针,将指针复制到栈中为新变量分配的空间中,而这个指针副本和原指针指向存储在堆中的同一个对象,复制操作结束后,两个变量实际上将引用同一个对象,因此改变其中一个,将影响另一个。

函数参数的传递

       1、ECMA中所有函数的参数都是按值传递的;

function setName(obj) {
    obj.name = "1111";
    obj = new Object();
    obj.name= "2222";
}
var person = newObject();
setName(person);
console.log(person.name);

//输出结果:1111

两种变量类型检测

1、        Typeof操作符是检测基本类型的最佳工具;

2、        如果变量值是null或者对象,typeof将返回“object”;

3、        Instanceof用于检测引用类型,可以检测到具体的、它是什么类型的实例。

4、        如果变量是给定引用类型的实例,instanceof操作符会返回true;

1 Number(1)的区别,aString(“a”)的区别类似

       console.log(1 ==Number(1));//true。

       1是一个常量,Number(1)是一个函数,把传入的参数转为number类型,比如Number(“  123 ”);返回值是123(消除前后空格),类型是number,如果传入的参数是Number(“abc”),则返回值是NaN,类型同样是number。

Var a = new Number(1),则a的类型为Object。返回值为[Number:1]

相关推荐
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页