本文主要为前端基础,希望和读者共同进步.
数据类型
1.原始类型和引用类型 原始类型的归类: 1.undefined 2.null 3.boolean 4.number 5.string 6.symbol 7.bigint 引用类型的归类: 1.object
2.引用类型和原始类型 存储: 1.原始类型的存储在栈中: 每当赋值时,会直接替换遍历对应栈中的存储值. 2.引用类型存储在堆中 每当赋值时,会把地址赋值给变量,使变量指向另一个地址.
比较经典的例子:
例1:
let num1 = 5;
let num2 = num1;
num2 = 6;
console.log(num1);//5
console.log(num2);//6
例2:
let obj1 = new Object();
let obj2 = obj1;
obj1.name = 'Nicholas';
console.log(obj1.name);//'Nicholas'
console.log(obj2.name);//'Nicholas
比较和传参
比较:
1.原始类型的比较
会对比两个变量栈内存中的存储值
2.引用类型的比较
会对比两个变量堆内存中的地址
函数参数传递:所有函数参数传递都是按值传递
1.原始类型的函数参数传递:
传递过去变量对应栈内存中的存储值
2.引用类型的函数参数传递:
传递过去变量对应堆内存中的地址值
比较经典的例子:
例1:
function addTen(num){
num += 10;
return num;
}
let count = 20;
let result = addTen(count);
console.log(count);//20
console.log(result);//30
例2:
function setName(obj){
obj.name = 'Nicholas';
}
let person = new Object();
setName(person);
console.log(person.name);//'Nicholas'
例3:
function setName(obj){
obj.name = 'Nicholas';
obj = new Object();
obj.name = 'Grag';
}
let person = new Object();
setName(person);
console.log(person.name);//'Nicholas'
判断数据类型的方法
确定数据类型的常用种方法:
1.对于基础类型typeof
语法:typeof 变量
返回值:字符串类型的数值
2.对于引用类型instanceof
语法:变量 instanceof 构造函数
返回值:布尔类型的true或false
3.使用constructor
var b = [1,2,3];
console.log(b,constructor === Array);//true
4.Array.isArray()
Array.isArray([1, 2, 3]); // true
Array.isArray({foo: 123}); // false