本文主要是介绍javascript高级程序设计阅读收获(4.1)——原始值与引用值,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.原始值
- undefined,null,boolean,number,string,symbol这些都是原始值。
- 原始值不能拥有属性
let name = "Tom";
name.age = 26;
console.log(name。age);//控制台输出undefined
- 通过变量吧原始值赋值给另一个变量时,原始值会被复制给新变量的位置。两个变量可以独立使用,互不干扰。
let num1 = 5;
let num2 = num1;
num2 += 1;
console.log(num1);//输出结果为5
console,log(num2);//输出结果为6
//改变num2不会影num1的值
- 原始值作为参数在函数里面使用,不会影响函数外部。
function add(num){
num += 10;
return num;
}
let count = 20;
let result = add(count);
console.log(count);//输出结果为20
console.log(result);//输出结果为30
2.引用值
- 引用值是由多个原始值构成的对象。
- 引用值可以随时添加、修改和删除其属性和方法。
let person = new Object();
person.name = "Tom";
console.log(person.name);//控制台输出"Tom"
- 把引用值从一个变量赋值给另一个变量的时候,将储存在变量中的指针赋值给另一个变量。两个变量实际上指向同一个对象。因此一个对象上的变化会在另一个对象上反应出来。
let obj1 = new Object();
let obj2 = obj1;
obj1.name = "Tom";
console.log(obj2.name);//输出结果为Tom
- 引用值作为参数在函数里面使用,会影响函数外部。因为下例中,obj与person指向同一个对象
function setName(obj){
obj.name = "Tom";
}
let person = new Object();
setName(person);
console.log(person.name);//输出结果为Tom
3.instanceof操作符
- typeof操作符对原始值很有用,对引用值作用不大。通常我们不关心一个值是不是对象,而是想知道他是什么类型的对象,可以通过instanceof来实现。
console.log(person instanceof Object);//如果变量person是Object则返回true
console.log(colors instanceof Array);//如果变量colors是Array则返回true
console.log(pattern instanceof RegExp);//如果变量pattern是RegExp则返回true
- 所有的引用值都是Object的实例,因此通过instanceof检测任何引用值和Object的构造函数都会返回true。
- 如果用instanceof检测原始值,始终返回false,因为原始值不是对象。
这篇关于javascript高级程序设计阅读收获(4.1)——原始值与引用值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!