变量的定义

原始值与引用值

六种原始值:undefined、null、string、boolean、number、symbol

symbol:表示独一无二的值,用于定义对象的唯一属性名。

保存原始值的变量按值访问的,因为我们操作的就是储存在变量种的实际值。

引用值是保存在内存里的对象,JS不允许访问内存位置,实际上操作的事该对象的引用;
保存引用值的变量是按引用访问的。

区别

1.动态属性

对于引用值而言可以随意添加、删除修改其属性和方法;
原始值无属性;

		原始类型的初始化可以使用原始字面量形式,若使用new关键字定义,则JS会创建一个object实例,
但其行为类似原始值。
例:
							let a = 'aa';
							let b = new String('bb');
							a.age = 11;
							b.age = 12;
							console.log(a.age) // undefined;
							console.log(b.age) // 12

2.传递参数

ECMAScript中所有函数的参数都是按值传递的,对于原始值来说将值复制到一个局部变量这无可厚非,
相对于引用值而言就言兑难理解;

let a = new object();
							function setA(obj){
								obj.name = 'name11'
							}
							setA(a);
							console.log(a.name)// name11
看样子是按引用传递的,但看下例;
							let a = new object();
							function setA(obj){
								obj.name = 'aaa';
								obj = new object();
								obj.name = 'bbb';
							}
							setA(a);
							console.log(a.name);//aaa

原理
obj在函数内部被重写,他变成了一个指向本地对象的指针,而那个本地对象会在函数执行结束后销毁;

4.确定类型

typeOf操作符最适合用于判断一个变量是否是原始数据类型,更准确的说他是判断一个变量是否是字符串、数值、布尔值、undefined的最好方式;
						let a = null;
						console.log(a) //object
						但是若是对象或空都会返回object;
						ECMAScript引入instanceOf操作符

用法:
console.log(person instanceOf Array) // true or false
console.log(person instanceOf object) // true or false
console.log(person instanceOf RgeExp) // true or false
依据定义,所有引用值都是object的实例,所以用instanceOf检测引用值或object构成的函数都会返回true;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值