Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
1.原始(5):数值、字符串、布尔、undefined、null
2.引用(3):数组、对象、函数
数组与对象的区别
- 数组与对象并无本质的区别,仅仅是语法上的不同
- 仅仅是成员声明方式和访问方式不同
- 显然对象的语义化更好
- 所以,可以将数组,看成对象的一个子集或特例
函数的本质
- 函数是JS中,最重要的数据类型
- 函数可视为一个普通的值
- 函数可以充当返回值,参数等,凡是用到值的地方
- 如果没有return,则返回 undefined
// number
console.log(123,typeof 123)
//string
console.log('php.cn',typeof 'php.cn')
// string定界符:单引号/双引号,反引号 ``
console.log(`Hello`)
// 反引号字符串功能非常强大,不仅仅是字符串,更是一个“模板”
let uname = '老马'
console.log(`Hello,${uname}`)
// `Hello,${uname}`:模板字面量,类似于PHP中的双引号
// ${uname}: 插值,占位符
console.log(true,typeof true)
console.log(false,typeof false)
// undefined
console.log(typeof a)
// null
console.log(typeof null)
const arr = ['手机', 5000, true]
// 逐个:索引
console.log(arr[0],arr[1],arr[2])
console.log(typeof arr,Array.isArray(arr),Array.isArray(uname))
const obj = {
name:'手机',
price: 5000,
is_stock: true
}
console.log(obj['name'],obj['price'],obj['is_stock'])
// 点语法,要求:属性名是合法的标识符
console.log(obj.name,obj.price,obj.is_stock)
console.log(typeof obj)
//命名函数
function fn1(){}
//匿名函数
const fn2 = function () {}
//箭头函数:匿名函数的语法糖
const fn3 = () => {}
console.log(typeof fn1,typeof fn2, typeof fn3)
// forEach: 用于迭代遍历数据组或对象
// forEach(callback):参数是一个函数,当函数当参数时,叫“回调”
// arr.forEach(function(item,key,arr){}),只有第一个参数item是必选
console.log('-----扩展--------------')
console.log('--------多维数组----------')
const arr1 = [
[1, '西瓜', 10],
[2, '苹果', 20],
[3, '黄桃', 30]
]
// arr1.forEach(function (item){
// console.log(item)
// })
arr1.forEach( item => console.log(item))
// ? 2. 对象数组
console.log('--------对象数组-----------')
const fruits = [
{ id: 1, name: '西瓜', price: 10},
{ id: 2, name: '苹果', price: 20},
{ id: 3, name: '黄桃', price: 30}
]
fruits.forEach(item => console.log(item))
length
,表示成员数量/数组长度
// 不是class,类:类似,像,类数据->类似一个数组,但不是数组
// 仍然是一个对象,用对象来模拟一个数组
// DOM编程,浏览器中的对象
console.log('--------类数组------------------')
const likeArr = {
0: 'admin',
1: 'admin@qq.com',
2: '87867535',
length:3,
}
console.log(typeof likeArr)
// ikeArr.forEach(item => console.log(item))
//将类数组转化为真正的数组
console.log(Array.from(likeArr))
//数组成员是函数
// const events =[
// function () {
// return '准备发射'
// },
// function () {
// return '击中目标'
// },
// function () {
// return '敌人投降'
// }
// ]
//箭头函数简化
const events = [() => '准备发射', () => '击中目标', () => '敌人投降']
events.forEach( ev => console.log(ev()))
// ? 对象方法
//对象的方法,就是属性,只是它的值是一个匿名函数
console.log('--------对象方法------------------')
const user = {
uname: '老马',
email: 'nx99@qq.com',
getUser: function () {
return `${this.uname}: ${this.email}`
}
}
//console.log(user.getUser())
//改成数组
const userArr = [
'老马',
'nx99@qq.com',
function () {
return `${this[0]}: ${this[1]}`
}
]
console.log(userArr[2]())