批改状态:合格
老师批语:
// ! 1、数组const arr = [1, 'admin', true]// 查看console.log(arr)console.table(arr)console.log(arr[0],arr[1],arr[2])// arr[数组坐标,从0开始]console.log(typeof arr)console.log(Array.isArray(arr))console.log(arr.length)

const arr = [数组成员,可以是任意类型]
// 将索引 语义化// 0->id, 1->name, 2->status// index(数值)->key(字符串)let user = {// 每个成员:属性id: 1,name: 'Jet',isMarried: true,'my email': 'admin@php.cn',}console.log(user.id,user.name,user.isMarried,user['my email'],user['id'],)

// 属性名是非法标识符时,用数组索引方式访问// user['索引']// user['索引'] = user.索引
user = {id: 5,uname: '朱老师',show: function() {return `id=${this.id},uname=${this.uname}`//this: 永远和当前对象绑定,this->user, user变它也变},say: () => `id=${this.id},uname=${this.uname}`,// 它的this,永远和它的上下文绑定(即执行环境或者父级作用域)}console.log(user.show())console.log('this:' + user.say())

//每个成员依然是一个数组// arr = [[...],[...],[...]]let arr = [[1, '手机', 5000],[2, '电脑', 9000],[3, '鼠标', 1000],]console.log(arr)// arr[1] 读取索引为1的数组console.log(arr[1])// arr[1][1] 读取索引1数组下索引1的数据console.log(arr[1][1])

// obj = [{...}, {...}, {...}]let obj = [{ name: '张三', age: 20 },{ name: '李四', age: 25 },{ name: '王五', age: 22 },]console.log(obj[2].name)console.log(obj[2]['age'])

const user ={0: 5,1: 'admin',2: 'admin@php.cn',length: 3,}// length 属性console.log(user[1], user.length,)// length 获取对象长度console.log(Object.keys(user).length)// 不是数组,是对象console.log(Array.isArray(user), typeof user)//类数组转换为真正数组arr1 = Array.from(user)console.log(arr1)console.log(Array.isArray(arr1) )

类数组本质上还是对象key是从0开始递增内部是数组结构,但是缺是批了一个对象的外衣
{var a = 100;let b = 200;console.log(`a=${a}`);console.log(`b=${b}`);}// var 不支持块作用域,会导致变量泄露console.log(a);// let 支撑块作用域//console.log(b);

let site = 'php中文网'const hello = function () {let site = 'php.cn'console.log(site)}hello()
// 函数内部也有一个变量 site// 内部声明的叫私有成员// 先从内部找,有这个变量就返回,没有就往外找


// 所有块,函数外部的,都是全局的const uname = 'php中文网'{// 如果内部有同名函数,也能构成作用域链//let uname = 'php.cn'console.log(uname)};(function () {// 函数作用域同样构成作用域链const uname = 'php.cn'console.log(uname)})()

作用域:查询变量作用域链:查询变量的路径(由内向外不可逆)
let item = {name: '小米13',price: 5000,show: function () {return `${this.name}: ${this.price} 元`},}console.log(item.show())
let name = '小米14'let price = 6000item = {name: name,price: price,show: function () {return `${this.name}: ${this.price} 元`},}console.log(item.show())
item = {name,price,show: function () {return `${this.name}: ${this.price} 元`},}console.log(`属性简化:`+ item.show())

如果属性与变量同盟名,可只写属性不写变量
item = {name,price,// 删除 `:function`show(){return `${this.name}: ${this.price} 元`}}console.log(`方法简化:`+ item.show())

方法简化:【删除 :function】
let uname = falseif (uname) {console.log('ok')}

如果为真(满足执行条件)就执行
if(uname) {console.log('ok')}else {console.log('Error')}

当条件不满足执行这里时(或者条件为假),就执行else
uname = 100if (uname === 120) {console.log('ok')}if (uname === 100) {console.log('Good')} else {console.log('Sorry, 404')}

按顺序执行,如若中途执行完成后就返回如若执行过程中没有满足条件,直到最后执行else
// 双分支语法糖 => 三元运算符let a = false;// 三元运算符公式: 条件 ? true : falseconsole.log(`三元运算符:` + (a? 'ok' : 'Error'))console.log('------------------------')

// 等值判断let b = 130switch (b) {case 100:console.log('b=100')breakcase 120:console.log('b=120')breakdefault:console.log('数据越界')}

语法糖:没有改变语法本质,只是简化了书写
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号