1.基础拓展

1.1.JS语法

1.Number支持科学计数
2.JavaScript使用的Unicode字符集

1.2.JS变量问题

1.一条语句,多条变量
var a=1,b=2,c=3;
等同于
var a = 1;
var b = 2;
var c = 3;
2.重新声明变量
var a = “嘿嘿”;
var a;
a的值还是为”嘿嘿”;

1.3.JS对象

对线有花括号分隔,在括号内部对象属性以名称和值对的形式(name:value)来定义。属性由逗号分割
var person = {name:”孙一童”,age:”13”,gender:”男”}
var a = new person;

1.4.typeof操作符、null、undefined

使用typeof操作符来检测变量的数值类型
可以使用null和undefined清空对象
null清空值为null
undefined清空值为undefined
null和undefined值相等但类型不等

2.严格模式

严格模式是由ES5中新增,它不是一种语句,而是是一个字面量表达式,在旧版本会被忽略。”use strict”的目的是指定代码在严格条件下执行
为什么使用严格模式:
严格模式时消除JS语法的一些不合理、不严谨、减少一些怪异行为
提高编译器效率,增加运行效率
为未来的JS版本做好铺垫
严格模式提现了JS更合理、更安全、更严谨的发展方向,报矿IE10在内的主流浏览器,都开始支持

严格模式的限制:
1.不允许使用未声明的变量
2.不允许删除变量或对象
3.不允许删除函数
4.不允许变量名重名
5.不允许使用八进制
6.不允许使用转义字符
7.不允许对只读属性赋值
8.不允许对一个使用getter方法读取属性进行赋值
9.不允许删除一个不允许删除的属性
10.变量名不允许使用”eval”字符串
11.变量名不允许使用”arguments”字符串
….
保留关键字:
为了向将来的JS的新版本过度,严格模式新增了一些保留关键字
implements
interface
let
package
private
protected
public
static
yield

3.JavaScript this关键字

JS中的this关键字表示当前对象的一个引用
但在JS中this不是固定不变的,他会随着执行环境的改变而改变
1.在方法中,this表示该方法所属的对象
2.如果单独使用,this表示全局对象
3.在函数中,this表示全局对象
4.在函数中,在严格模式下,this是未定义的(undefined)
5.在时间中,this表示接受事件的元素
6.类似call()和apply()方法可以将this引用到任何对象

4.let和const

ES6新增了两个重要的JS关键字:lef和const
let声明的变量只在let命令所在的代码块有效
const声明一个只读的常量,一旦声明,常量的值就不能改变
在ES6之前,JS只有两种作用域:全局变量与函数内的局部变量

5.回调函数

回调函数就是一个函数,它时我们启动以异步任务的时候就告诉它,等你完成了任务要干什么,这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终

其他问题拓展

JS中 = 赋值 ==比较是否相等 ===恒等计算符(严格模式)
JS在处理小数运算不准确的问题上采取整数乘除法解决
return在最后的位置返回可以不用使用;号 其他情况需要
JS数组不允许名字作为索引,只能用数字
JS对象使用名字作为索引,当访问数据时,JS会把数组重新定义为标准对象,执行这样的操作后,数组的方法以及属性将不能再使用,否则会发生错误
定义数组元素,最后不能添加逗号,在不同的浏览器会出现不同的结果
定义对象,最后不能添加逗号
undefined不是null
所有JS数字均为64位