- 下载并安装node,
node -v
检验版本。(node里已经包含了npm工具) - 使用脚手架
es10-cli
初始化babel、webpack等配置。
①初始化项目es2019
:npx es10-cli create es2019
②切换到项目,并启动:cd es2019
,npm start
。
脚手架-ES2019从入门到精通,搭建成功 🎉
server is listen, http://localhost:8080
http://localhost:8080
如果npm版本低,创建失败:
如何使用npm以及nrm管理源
https://www.imooc.com/article/254541
知识点
- 没有使用任何关键字定义的变量,无论是在任何作用域,均作为全局对象window的属性存在,全局属性可以被人为删除
delete abc
或delete window.abc
,但不会随着作用域的消失而销毁。 - 全局变量不可以被人为删除,而全局属性可以被人为删除,
delete abc
或delete window.abc
。 -
局部作用域,指的是函数作用域。使用
var
定义的局部变量在函数执行完毕后也被销毁。 -
let
和var
的区别:
①let
是具有块级作用域的{}
,作用域不能由块级提升为全局,{}
外不可以访问。
var
定义的变量,作用域可以由块级提升为全局,{}
外也可以访问。
②let
定义的变量均不可以以window.abc
来访问。
var
定义的块级和全局变量可以以window.bcd
来访问,var
定义的局部变量不可以以window.bcd
来访问。
③ 使用let
定义的变量不可以被重复定义。
使用var
定义的变量可以被重复定义。 -
块级作用域:单纯的
{}
、for
循环、while
循环、条件为真的if
区域。 -
const
定义的是常量,在申明时必须初始化,后续不能修改。const
其他性能和let
一致。
数组的5种遍历
arr = [1,2,3,4,5]
console.log('-------for-------')
for(let i=0; i<arr.length; i++){
console.log(arr[i])
}
console.log('-------foreach-------')
arr.forEach(element => {
// if(item===2) continue //不可用break或continue
console.log(element)
});
console.log('-------every-------')
arr.every(function(item){
if(item===5){
return false //相当于break
}
if(item===2){
//相当于continue
}else{
console.log(item)
}
return true
})
console.log('-------forin-------')
for (const key in arr) {
if (arr.hasOwnProperty(key)) {
const item = arr[key];
console.log(key, item)
}
}
console.log('-------forof-------')
for (const iterator of arr) {
console.log(iterator) //遍历器可以自定义,后续章节
}
伪数组向数组的转换
为什么要转换,因为只有转换成数组对象才能调用Array的API。
//伪数组向数组转换,slice切片 (ES5)
//实现arguments到数组的转换(arguments是函数的不定参)
let args = [].slice.call(arguments)
//实现nodelist到数组的转换
let imgs = [].slice.call(document.querySelectorAll('img'))
//Array.from() (ES6)
//实现arguments到数组的转换(arguments是函数的不定参)
let args1 = Array.from(arguments)
//实现nodelist到数组的转换
let imgs1 = Array.from(document.querySelectorAll('img'))
Array.from(ArrayLike, mapfn(v, k), thisArg)
//ArrayLike: 伪数组, mapfn(v, k): 遍历伪数组的函数, thisArg: this对象
let array = Array.from( {length: 5}, function(v,k){
return k; //给伪数组元素赋值
})
// 伪数组可以是具备索引的对象,另外有一个length属性:{0:'a', 1:'b', length:5}
console.log(array) //(5) [0, 1, 2, 3, 4]
❓我没明白thisArg是干吗用的?以后用到了研究。
网友评论