- 栈stack和堆heap的区别:原始值是存储在栈中的简单数据段,也就是说,它们的值直接存储在变量访问的位置;引用值是存储在堆中的对象,也就是说,存储在变量处的值是一个指针,指向存储对象的内存处。如果一个值是引用类型的,那么它的存储空间将从堆中分配。由于引用值的大小会改变,所以不能把它放在栈中,否则会降低变量查寻的速度。相反,放在变量的栈空间中的值是该对象存储在堆中的地址。地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响。
- undefined 和 null :undefined是声明了变量但未对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null。
- Number值集合的外边界:Number.MAX_VALUE和Number.MIN_VALUE。所有ECMAScript数都必须在这两个值之间,不过计算生成的数值结果可以不落在这两个数之间。当计算生成的数大于Number.MAX_VALUE时,它将被赋予值Number.POSITIVE_INFINITY,意味着不再有数字值,同样,生成的数值小于Number.MIN_VALUE的计算也会被赋予值Number.NEGATIVE_INFINITY,也不再有数字值。如果返回的是无穷大值,那么结果就不能再用在其他计算。
无穷大的值:
Infinity === Number.POSITIVE_INFINITY
,-Infinity === Number.NEGATIVE_INFINITY
,判断是否有穷的isFinite(123) === true
a=12345, a.toString(2) === 11000000111001
,与之相对的是a = parseInt(11000000111001, 2) === 12345
- 闭包(closure),简单来说,该函数能使用函数之外定义的变量。也就是说,闭包里使用的某些值/变量是从执行环境中获取的。
时间: 2024-10-25 06:27:16