记录一下JS变量
js变量类型有如下几种:
number,string,boolean,null,undefined,symbol,
object:{Array,Object,Function,Date...} //这一系列是引用类型
其中Object为引用类型存放在堆内存中,其余的为值类型存放在栈内存中
定义变量的方式及区别:
// 方式一
var a = 111; //不会劫持作用域,如果不赋值会默认初始化为 undefined
var a = 222; // 再次定义会覆盖
//方式二
let b = 111; //会劫持块级作用域,需指定一个初始值
let b = 222; //会报错
//方式三
//此种方式通常定义常量
const c = 111; //也会劫持块级作用域,需指定一个初始值
const c = 222; //报错
const arr = Array.of(1,2,3); // 此变量是可以更改的
arr.push(4); // 可对其进行追加
arr.shift(); // 删除首元素
arr.reverse(); // 反转
// 虽然此变量是const定义的,但由于赋值的是引用类型,
// 所以存放在arr中的数据是指向[1,2,3]的指针,所以该数组可以通过原型上的部分方法进行操作
关于变量的面试题
1、var 与 let , const定义变量的区别?
2、const定义的常量如果是引用类型还可以更改吗?为什么?
3、深浅拷贝,深拷贝如何实现 // 1、JSON.parse(JSON.stringfiy(变量名))2、递归至简单变量拷贝