Contents
  1. 1. 一、var,const,let的区别
  2. 2. 二、数值的扩展
  3. 3. 三、箭头函数

一、var,const,let的区别

1.var: 没用块级作用域,变量声明提升(可以先使用再声明变量),未用var声明的变量会被添加一个全局作用域,而用var声明的变量作用域是当前上下文。

2.const:const用来声明常量,一旦声明,其值就不能改变,所以用const声明变量时必须立即初始化。

const声明的常量具有块级作用域,不允许重复声明常量,不存在常量提升。

1
2
3
4
5
6
const PI = 3.14;
PI // 3.14

PI = 3;
// TypeError: "PI" is read-only
// const声明常量时立即赋值,后面不能改变它的值

3.let: let声明的变量也具有块级作用域,不允许重复声明变量,不存在变量提升。

1
2
3
4
5
6
{
let a = 10; // a只在let命令所在的代码块内有效
var b = 1;
}
a // ReferenceError: a is not defined
b // 1

二、数值的扩展

1.二进制和八进制分别用前缀0b(或0B)和0o(或0O)表示

2.ES6在Number对象上提供了Number.isFinite()和Number.isNaN()方法,用来检查Infinite和NaN这两个特殊值。

Number.isFinite()和Number.isNaN()这两个新方法和传统的全局方法isFinite()和isNaN()的区别:
传统方法先调用Number()将非数值转化为数值再进行判断,而新方法只对数值有效,对非数值一律返回false。

3.Number.isInteger()用来判断一个值是否为整数。

1
注意: 在JavaScript内部,整数和浮点数是同样的储存方法,3.0和3视为同一个值

4.安全整数和Number.isSafeInteger()

安全整数范围:-2^{53}——2^{53}(不含两个端点)

5.Math对象的扩展

Math.trunc()用于去除一个数的小数部分,返回整数部分

1
2
Math.trunc(5.8)    // 5
Math.trunc(-4.9) // -4

Math.sign()用于判断一个数是正数、复数、零

1
2
3
4
5
正数    返回+1
复数 返回-1
0 返回0
-0 返回-0
其他值 返回NaN

Math.cbrt()计算一个数的立方根
Math.clz32()返回一个数的32位无符号整数形式有多少个前导0
Math.imul()返回两个数以32位带符号整数相乘的结果,结果也为32位带符号整数
Math.fround()返回一个数的单精度浮点数形式
Math.hypot()返回所有参数的平方和的平方根

三、箭头函数

1
2
3
4
5
6
7
8
9
10
var f = v => v;
// 等同于
var f = function(v) {
return v;
}
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1+num2;
}
Contents
  1. 1. 一、var,const,let的区别
  2. 2. 二、数值的扩展
  3. 3. 三、箭头函数