// 一、作用域————块级作用域————let、const: { var name = 'pangpang' } console.log(name) { let name = 'pangpang' } console.log(name) const name = 'pangpang' name = 'xiaopang' console.log(name) // 二、字符串————模板字符串————`my name is ${name}`: const name = 'pangpang' const work = 'civil servant' console.log('name is ' + name + ', work is ' + work) console.log(`name is ${name}, work is ${work}`) console.log(`name is ${name}, work is ${work} `) // 三、函数拓展————箭头函数、参数默认值、展开运算符: // 1.箭头函数: function hello_01(name) { console.log(`hello ${name}!`) } const hello_02 = name => { console.log(`hello ${name}!`) } hello_01('pangpang') hello_02('pangpang') const name = 'pangpang' setTimeout(() => { console.log(`hello ${name}!`) }, 1000); const square = n => n*n console.log(square(5)) const arr = [1, 2, 3] console.log(arr.map(function(n) { return n*n })) console.log(arr.map(n => n*n)) // 2.参数默认值: const hello_03 = (name = 'xiaopang') => { console.log(`hello ${name}!`) } hello_03() hello_03('pangpang') // 3.展开运算符: const hello_04 = (name_01, name_02) => { console.log(name_01, name_02) } const nameArr = ['pangpang', 'fanfan'] hello_04.apply(null, nameArr) hello_04(...nameArr) // 四、对象扩展———— // Object.keys、values、entries、 // 计算属性、 // 对象方法简写、 // 展开运算符: // 1.Object.keys、values、entries: const obj = {name: 'pangpang', work: 'civil servant'} console.log(Object.keys(obj)) //["name", "work"] console.log(Object.values(obj)) //["pangpang", "civil servant"] console.log(Object.entries(obj)) //[["name", "pangpang"], ["work", "civil servant"]] // 2.计算属性: const type = 'name' const obj = { [type]: 'xiaopang', type, // 3.对象方法简写: hello_01: function() { }, hello_02() { } } obj[type] = 'xiaopang' console.log(obj) //{name: "xiaopang", type: "name", hello_01: ƒ, hello_02: ƒ} // 4.展开运算符: const obj_01 = {name: 'pangpang', work: 'civil servant'} const obj_02 = {name: 'xiaopang', age: 23} console.log({...obj_01, ...obj_02, birth: 1997}) // 五、解构赋值: const nameArr = ['pangpang', 'fanfan'] let arg_01 = nameArr[0] let arg_02 = nameArr[1] let [arg_01, arg_02] = nameArr console.log(`arg_01 is ${arg_01}, arg_02 is ${arg_02}`) const obj_01 = {name: 'pangpang', work: 'civil servant'} const { name, work } = obj_01 console.log(`name is ${name}, work is ${work}`) // 六、类: function MyApp() { this.name = 'pangpang' //公共属性 } MyApp.prototype.sayHello = function() { console.log(`hello ${this.name}!`) } //公共方法 class MyApp { constructor() { this.name = 'pangpang' //公共属性 } //构造函数 sayHello() { console.log(`hello ${this.name}!`) } //公共方法 } const app = new MyApp() app.sayHello() // 七、新数据结构————Set、Map、Symbol: // 1.Set:元素不可重复 // 2.Map:是对象的扩展,对象的key必须是字符串,Map的key可以是任意值 // 3.Symbol:可以生成不重复的变量 // 八、模块化: // 1.从文件导出: // module_01.js: export const name = 'pangpang' export function sayHello() { console.log('hello') } //上面两个直接export有作用域 // module_02.js: const otherName = 'xiaopang' export default otherName //export default使整个模块默认暴露 // module_03.js: export default function test() { console.log('pass') } // 2.导入其他文件: import { name, sayHello } from './module_01' import otherName from './module_02' import test from './module_03' import * as mod_01 from './module_01' //起一个别名 console.log(name) //pangpang sayHello() //hello console.log(otherName) //xiaopang test() //pass console.log(mod_01) //返回一个对象 // 九、其他———— // 装饰器、 // async、await、 // 对象拓展符、 // 函数绑定
f5ddfb8b2762 1 年前
c965ffbbb9b9 1 年前