JavaScript 基本类型、引用类型、基本包装类型

转载请注明预见才能遇见的博客:https://my.csdn.net/

原文地址:https://blog.csdn.net/weixin_42787326/article/details/81334482

JavaScript基本类型、引用类型、基本包装类型

目录

JavaScript基本类型、引用类型、基本包装类型

1.基本类型(简单类型),值类型: number,string,boolean

2.基本包装类型  String Number Boolean

3.复杂类型(引用类型):object

4.空类型:undefined,null

5.基本类型和引用类型的总结

6.基本包装类型Number Boolean 扩展

1.Boolean类型

2.Number 类型

3.String类型


原始数据类型: number,string,boolean,undefined, null,object

1.基本类型(简单类型),值类型: number,string,boolean

  • 值类型的值在哪一块空间中存储? 栈中存储
  • var num=10;//值类型,值在栈上
  • 值类型之间传递,传递的是值
  • 值类型作为函数的参数,传递的是值

2.基本包装类型  String Number Boolean

  • 普通变量不能直接调用属性或者方法
  • 对象可以直接调用属性和方法
  • 基本包装类型:本身是基本类型,但是在执行代码的过程中,如果这种类型的变量调用了属性或者是方法,那么这种类型就不再是基本类型了,而是基本包装类型,这个变量也不是普通的变量了,而是基本包装类型对象
  • 基本类型对应基本包装类型:string--String  number--Number boolean--Boolean

引用类型与基本包装类型的区别:在于对象的生命周期。

使用new关键字创建的引用类型的实例,对象在当前作用域都存在。而基本包装类型自动创建的对象则在对象被调用的时刻存在,调用完毕后,就被销毁不存在了。

Object()构造函数,可以根据你传入的参数的类型,返回基本包装类型的实例。你传入字符串,则返回String类型的实例;传入数字,则返回Number类型的实例;传入布尔值,则返回Boolean类型实例。如:

var obj = new Object("hello,1024idea");
console.log(obj instanceof String);// true

 注意:使用new关键字创建的构造函数与使用同名的转型函数的效果是不一样的。如:

// 构造函数与转型函数返回值的区别
var str = "1024";

var strObj = new String(str);
console.log(typeof strObj);//object

var strNum = Number(str);
console.log(typeof strNum);//number

这个例子中,变量strObj保存的是object类型,而变量strNum保存的是number类型。

一般情况下,是不建议手动的去创建基本包装类型的对象,因为这样经常造成的问题是,分不清自己是在处理基本包装类型还是引用类型。

3.复杂类型(引用类型):object

  • 引用类型的值在哪一块空间中存储?对象在堆上存储,地址在栈上存储
  • var obj={};//复杂类型,对象在堆,地址(引用)在栈
  • 引用类型之间传递,传递的是地址(引用)
  • 引用类型作为函数的参数,传递的是地址
var obj={
  name:"小明"
};
function f2(obj2) {
  obj2.name="小红";
}
console.log(obj.name);//小明
f2(obj);
console.log(obj.name);//小红

4.空类型:undefined,null

5.基本类型和引用类型的总结

  • 值类型的值在哪一块空间中存储? 栈中存储
  • 引用类型的值在哪一块空间中存储?对象在堆上存储,地址在栈上存储
  • var num=10;//值类型,值在栈上
  • var obj={};//复杂类型,对象在堆,地址(引用)在栈
  • 值类型之间传递,传递的是值
  • 引用类型之间传递,传递的是地址(引用)
  • 值类型作为函数的参数,传递的是值
  • 引用类型作为函数的参数,传递的是地址
     

6.基本包装类型Number Boolean 扩展

1.Boolean类型

Boolean类型是布尔值创建的引用类型。创建Boolean类型,可以使用Boolean构造函数去创建,并传入true或者false参数。如:

var booleanObject = new Boolean(true);

注意:在布尔表达式中使用Boolean对象,我们可能会出错的一些地方,如:

var booleanObj = new Boolean(false);
var result = booleanObj && true;
console.log(result);

你觉得上面会打印出什么结果呢?大多数人可能会说是false,因为一真一假嘛,所以为false。但是,事实上结果是true,因为booleanObj是一个对象,在布尔表达式中,所有的对象都会被转换为true。记住:引用类型的布尔值,其实是对象。

当然,我们不推荐这么用(不推荐用引用类型的布尔值来判断布尔表达式)

console.log(Boolean(0));//false
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
console.log(Boolean(false));//false
console.log(Boolean(NaN));//false

2.Number 类型

Number类型是数字值创建的引用类型。创建Number类型,使用Number类型的构造函数,可以传递数字值参数,如:

var numberObj = new Number(1024);

这里介绍一个Number类型的一个方法:numberObj.toFixed();可以接受一个数值,表示保留的小数的个数(会自动四舍五入)。在平时项目中,我们经常要处理价格问题或者增长率问题,即保留多少为小数,用这个方法非常有效。

// Number 类型
var numberObj = new Number(1024.153);
console.log(numberObj.toFixed(2));//1024.15
console.log(numberObj.toFixed(1));//1024.2

3.String类型

String类型是字符串值创建的引用类型。

String类型创建的方式,使用String构造函数创建,可以传入字符串参数;如:

var stringOjb = new String(“hello,1024idea”);

资料:JavaScript字符串

JavaScript基本类型、引用类型、基本包装类型

博客地址:https://blog.csdn.net/weixin_42787326/article/details/81334482

猜你喜欢

转载自blog.csdn.net/weixin_42787326/article/details/81334482
今日推荐