-
var,const,let的区别
-
var: 没用块级作用域,变量声明提升(可以先使用再声明变量),未用var声明的变量会被添加一个全局作用域,而用var声明的变量作用域是当前上下文。
-
const:const用来声明常量,一旦声明,其值就不能改变,所以用const声明变量时必须立即初始化。
const声明的常量具有块级作用域,不允许重复声明常量,不存在常量提升。
const PI = 3.14; PI // 3.14 PI = 3; // TypeError: "PI" is read-only // const声明常量时立即赋值,后面不能改变它的值
- let: let声明的变量也具有块级作用域,不允许重复声明变量,不存在变量提升。
-
{ let a = 10; // a只在let命令所在的代码块内有效 var b = 1; } a // ReferenceError: a is not defined b // 1
-
数值的扩展
-
二进制和八进制分别用前缀0b(或0B)和0o(或0O)表示
-
ES6在Number对象上提供了Number.isFinite()和Number.isNaN()方法,用来检查Infinite和NaN这两个特殊值。
Number.isFinite()和Number.isNaN()这两个新方法和传统的全局方法isFinite()和isNaN()的区别:
传统方法先调用Number()将非数值转化为数值再进行判断,而新方法只对数值有效,对非数值一律返回false。 - Number.isInteger()用来判断一个值是否为整数。
注意: 在JavaScript内部,整数和浮点数是同样的储存方法,3.0和3视为同一个值
- 安全整数和Number.isSafeInteger()
安全整数范围:-2^{53}——2^{53}(不含两个端点) - Math对象的扩展
Math.trunc()用于去除一个数的小数部分,返回整数部分 -
Math.trunc(5.8) // 5 Math.trunc(-4.9) // -4
Math.sign()用于判断一个数是正数、复数、零
正数 返回+1 复数 返回-1 0 返回0 -0 返回-0 其他值 返回NaN
Math.cbrt()计算一个数的立方根
Math.clz32()返回一个数的32位无符号整数形式有多少个前导0
Math.imul()返回两个数以32位带符号整数相乘的结果,结果也为32位带符号整数
Math.fround()返回一个数的单精度浮点数形式
Math.hypot()返回所有参数的平方和的平方根
-
箭头函数
var f = v => v; // 等同于 var f = function(v) { return v; } var sum = (num1, num2) => num1 + num2; // 等同于 var sum = function(num1, num2) { return num1+num2; }