一:js的关键字和保留字 ECMA-262中描述了一组保留的关键字, 什么是关键字:控制语句的开始和结束或者执行特定的操作,保留的关键字不能用作标识符或者属性名。
关键字:
保留字没什么特别用途但是为了以后用作关键字使用的
始终保留:
enum
严格模式下的保留字:
var的作用域
var 定义一个变量在函数内是属于局部变量在函数外打印的话会报错
function test(){ var a = 100 }
test()
console.log(a) //报错
因为这个时候var出来的是变量名也就是标识符是在函数的局部变量内的,函数退出时就回被销毁, 你可以不加var 他就变成全局变量了
function test(){ a = 100 }
test()
console.log(a) //正常输出
let与var的区别: 一:变量提升
var能够变提升
function test(){
console.log(id) var id = "12"
} 这个打印是不会报错的,因为var定义的变量已经被提升到函数的顶部
这个时候会爆出undefined 他这个函数代码相当于
function test(){ var id ; console.log(id) var id = 10 } var id 是一个空的值所以报出undefined
var 和 let 在循环语句里面的不同
for(var i = 0 ; i<=5 ; 1++){
setTimeout(()=>{console.log(i)})
} 这个时候输出的内容永远是5,因为每次for循环的销毁迭代变量输出的都是最后一个,所以是5;
for(let i = 0 ; i<=5 ; 1++){
setTimeout(()=>{console.log(i)})
} 这个时候输出的是 12345 因为let声明的for循环里面每次循环都会生成一个新的变量。
数据类型
Null类型
null其实是一个空对象的指针,Objsct这就是为什么typeof去判断null的时候显示object
undefined是由null值派生而来的,所以es6里面他们两个是相等的
undefined===null == true
不能用三个等号===来判断他们,全等是严格模式返回的结果是false,等于这个操作符会把里面数值进行转换。
let age = null //更简洁的写法是
let age
if(age){
//此处判断不会进来
}
if(!age){
//此处会进来判断
}
总结:所以任何时候想要保存一个对象,而当时又不知道具体要保存哪个对象的时候可以这么做。
Boolean
布尔值是es6使用最频繁的类型,有两个值:true 和 false
没个es6烦人类型都应该有布尔值的类型 ,可以通过Boolean()函数调用来转换。
var message = "hellow word "
console.log(Boolean(message))
这个时候Boolean就会把字符串类型的值转换为布尔值。显示结果为true,如果这个字符串为空的话那么就会返回false,所以只要是非空的类型值去判断的话都是为true的否则false根据上面的那个对应表来看就行。
Number
1.浮点值
浮点值里面一定有的就是一定会有小数点而且小数点的后面必须有数字虽然前面的整数可以省略但是不推荐。
let num = 1.03
艾玛 搞不清随后再看吧接着下一个
NAN
涉及NaN的操作之后始终都返回NaN
NaN不等于NaN
isNaN()这个函数接收一个参数,返回的是可以使数值的布尔值 true和false 可以转化为数值的返回false
不可以转化为数值的会返回true;
数值转换
有三个函数可以将非数值转换为数值:
1.Number()
2.parseInt()
3.parseFlot
number是一种转型函数,可以把任何类型都转化为数值,parseInt和parseFlot这两个是把字符串转换为数值