概述
- 本文主要讲解JS的一些重要的基础知识,可能不会对你开发效率有大幅提升,但可以对你JS这块知识增砖添瓦
- JS中对于大数该如何处理,可以用MDN最新发布的基础类型得以解决
- JS中变量作用域如何理解
基础类型
- 最新的MDN出了8中数据类型,其中7中原始数据类型,和可变数据类型(Object)
- 原始数据类型值不可变,可变数据类型的地址空间是引用地址,所以可以更改。
- 函数、数组的本质实际上也是Object类型
- 在JS中,变量的定义实质就是在获得计算机内存中的一块地址空间,在这个地址空间中存储数据。
- 原始数据赋值实际是开辟一块新的地址空间,可变数据类型赋值实际是给的内存地址,只要修改一处,所有是该内存地址的变量都都会修改
let a = 10;
let b = a;
a = 11;
console.log(b)
--------修改可变数据--obj和copyObj变量的地址空间相同--
let obj = {a: 10};
let copyObj = obj
obj.a = 11;
console.log(copyObj.a)
- BigInt类型处理JS大数场景
- BigInt类型不能与数字类型相互转换,否则报错
- BigInt类型的数据能也能进行加减乘除运算
- 使用BigInt类型处理JS大数
const bigNum = 46546484789798746848498489n;
const num = bigNum * 5n;
console.log(num)
const str = String(num);
const result = str.substring(0, str.length);
console.log(result)
变量作用域和常见运算的坑
- 变量作用域分全局变量和局部变量,粗略的理解可以是在函数内部定义的变量叫局部变量,其他的位置定义的都是全局变量。
- 虽然全局变量可以被全局访问到,但也要如何定义变量,var、let、 const 定义的变量会有不同含义;其中涉及到变量提升、临时性死区、常量等含义,具体见文档
function func () {
let a = 10
var b = 20
}
console.log(a)
console.log(b)
if(ture) {
var a = 10;
let b = 20
}
console.log(a)
console.log(b)