ES6
首先ES6需要转为ES5才能兼容所有浏览器,项目要求兼容高的需要使用编译工具:babel编译一下。
下载安装babel
1.需要电脑安装有node环境(node中自带npm包管理器)
2.执行下载命令(卸载命令npm uninstall babel-cli -g)
npm install babel-cli -g
3.在项目根目录下创建.babelrc文件
{
"presets":[],//=>编译时候需要依赖的语言解析包
"plugins":[] //=>编译时候需要依赖的插件信息
}
4.安装依赖语言解析包(要在当前目录下打开doc窗口)
执行
npm install babel-preset-latest(最新发布的语言解析模板)
npm install babel-preset-stage-2(进入草案,未发布语言解析模板)
安装完成后会生成一个node_modules文件夹
5.去配置文件中填写参数
{
"presets":[
"latest"
"stage-2"
],//=>编译时候需要依赖的语言解析包
"plugins":[] //=>编译时候需要依赖的插件信息
}
使用babel编译命令
babel es6文件夹名 -d es5文件夹名
将es6文件夹里面的js(例如:es6/index.js)编译成es5文件夹中对应名称的文件(es5/index.js)
实时编译的命令===> babel es6 -d es5 -w
let(创建变量)和const(创建常量)
(1)let和const不存在变量提升
(2)Let不允许(同一作用域)重复声明,但是可以重新赋值
(3)暂时性死区 :使用typeof检测没被声明过的变量es5返回undefined,es6中返回报错信息
(4)es6存在块级作用域,es5中不存在块级作用域(块级作用域理解为私有作用域:有私有变量和作用域链的一些机制,用大括号包起来的大部分为块级作用域)
Js中创建变量方式汇总
***Es5中存在:变量提升 重复声明
Var(创建变量)
function(创建函数)
***es6中不可以变量提升,不可重复声明,还存在块级作用域
Let 创建变量
const创建常量
class 创建类
import 模块导入的方式
js中常见错误类型
1.SyntaxError(语法错误):解析代码时发生的语法错误
例如:Uncaught SyntaxError: Unexpected number
2.ReferenceError(引用错误):
<1>引用了一个不存在的变量
例如: console.log(a);----->Uncaught ReferenceError: a is not defined
<2>将变量赋值给一个无法被赋值的对象
例如:console.log()= 1;------>Uncaught ReferenceError: Invalid left-hand side in assignment
3.RangeError(范围错误):超出有效范围
例如:var a= new Array(-1); ----> Uncaught RangeError: Invalid array length
4.TypeError(类型错误)
a.变量或参数不是预期类型,比如,对字符串、布尔值、数值等原始类型的值使用new命令,就会抛出这种错误,因为new命令的参数应该是一个构造函数。
例如: var a= new 123;---->Uncaught TypeError: 123 is not a function
b.调用对象不存在的方法
例如:var a;a.aa();----> Uncaught TypeError: Cannot read property 'aa' of undefined
5.URLError(URL错误)
与url相关函数参数不正确,主要是encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()这六个函数。
例如: decodeURI('%2')--->Uncaught URIError: URI malformed
6.EvalError(eval错误)--->eval函数没有被正确执行