let name1 = "Nicholas"; let name2 = new String("Matt"); name1.age = 27; name2.age = 26; console.log(name1.age); // undefined console.log(name2.age); // 26 console.log(typeof name1); // string console.log(typeof name2); // object
4.1.2 复制值
通过变量把一个原始值赋值到另一个变量时,原始值会被复制到新变量的位置。
1 2
let num1 = 5; let num2 = num1;
在把引用值从一个变量赋给另一个变量时,这里复制的值实际上是一个指针,指向存储在堆内存中的对象。
1 2 3 4
let obj1 = new Object(); let obj2 = obj1; obj1.name = "Nicholas"; console.log(obj2.name); // "Nicholas"
4.1.3 传递参数
变量有按值和按引用访问,而传参则只有按值传递。
1 2 3 4 5 6 7 8 9
function addTen(num) { num += 10; return num; }
let count = 20; let result = addTen(count); console.log(count); // 20,没有变化 console.log(result); // 30
4.1.4 确定类型
前一章提到的 typeof 操作符最适合用来判断一个变量是否为原始类型。
1 2 3 4 5 6 7 8 9 10 11 12
let s = "Nicholas"; let b = true; let i = 22; let u; let n = null; let o = new Object(); console.log(typeof s); // string console.log(typeof i); // number console.log(typeof b); // boolean console.log(typeof u); // undefined console.log(typeof n); // object console.log(typeof o); // object