这是我参与8月更文挑战的第十二天,活动详情查看:8月更文挑战
原始值与引用值
ECMAScript变量可以包含两张不同类型的数据:原始值和引用值。原始值就是最简单的数据,引用值则是由多个值构成的对象。Undefined、Null、Boolean、Number、String和Symbol就是六种原始值类型。保存原始值的变量是按值访问的,保存引用值的变量是按引用访问的。
动态属性
对于引用值,可以随时添加、修改和删除其属性和方法。
let juejin = new Object();
juejin.year = 2021;
console.log(juejin.year); //2021;
原始值则不能有属性,只有引用值能动态添加后面可以使用的属性。
复制值
在通过变量把一个原始值赋值给到另一个变量是,原始值会被复制到新变量的位置。
let year1 = 2021;
let year2 = year1;
这里的year1和year2虽然值都是2021,但是是两个完全独立的变量。
而在把引用值从一个变量赋给另一个变量时,存储在变量中的值也会被复制到新变量的位置。区别在于,这里复制的值实际上是一个指针,这个指针指向存储在堆内存中的对象。也就是说,原始值复制时传的是值,引用值复制时传的是址。
let juejin = new Object();
let obj = juejin;
juejin.year = 2021;
console.log(obj.year); //2021
传递参数
ECMAScript中所以函数的参数都是按值传递的,在传递参数时,值会被复制到一个局部变量(即一个命名参数,或者说是arguments对象中的一个坑位),在按引用传递参数时,值在内存中的位置会被保存到一个局部变量。即使对象时按值传进函数的,obj也会通过引用访问对象。当obj在函数内部被重写时,它变成一个指向本地对象的指针,而这个本地对象在函数执行结束时会被销毁。
确定类型
采用typeof
操作符用于判断一个变量是否为原始值。可以判断字符串、数值、布尔值或布尔值或 undefined。
如果值为 null 则返回 object
如果需要进一步判断是什么类型的对象,可以采用instanceof
如果用 instanceof 检测原始值,则返回 false
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!