这段代码看不懂啊? 谁帮我瞧瞧。
发布于 7 年前 作者 min49 12381 次浏览 来自 官方Issues

const之后的{index}是什么意思?

let是什么意思?

forEach我知道是循环,后面也有一个三元表达式。但是中间那一块儿"forEach((v,i) == i",我就不明白了,v和i分别代表什么?

9 回复

const {index} 这种方式属于es6中的解构赋值

const 和let都是es6中新出的 const声明的是常量 let声明的是变量

(1)

解构赋值。。

const {index} = e.detail 相当于 const index = e.detail.index

(2)

let、var 都是声明变量的东东,const声明常量的东东,用const写的常量不可以给它赋值,不然会报错。

(3)

forEach,循环的i相当于是tabs里每一个元素的下标,判断这个下标等等于从页面内容上拿到的index的话,设置tabs下面的该元素的isActive变量为true 否则false。

数组结构相当于是这样的。

tabs: [{ isActive: false },{ isActive: false },{ isActive: false }]

const 声明常量 let 声明变量

cosnt {index} = e.detail //e.detail 是一个集合或是对象 要拿其中的 index

可以理解为:var index = e.detail.index

let {tabs} = this.data // this.data 是一个集合或是对象 要拿其中的 tabs

可以理解为:var tabs = this.data.tabs

tabs.forEach((v,i)=>{

// v当前元素 i 当前元素的下标

//三元表达示 当 i( 当前元素的下标) 等于 index (也就是 e.detail.index)时 当前 元素 v 的属性isActive 动态赋值

true v.isActive =true false v.isActive=false

i==index ?v.isActive=true:v.isActive=false

})

你今天把这个看一下就全懂了,http://es6.ruanyifeng.com/

v是内容,i是v的下标,可以理解为:

for (var i = 0; i < tabs.length; i++) {

var v = tabs[i];

}

这几个问题基本也属于基础扫盲问题,es6的基本知识,应该你自己去学习。

楼主可能刚过入手js,建议多学习下ES6的基本语法

const {index} = e.detail

解构赋值,相当于 const index = e.detail.index

{ a } = A

如果A中不存在a,即A.a不存在,则a = undefined

{ a = 5 } = A

如果A中不存在a,即A.a不存在,则a = 5,反之a = A.a的值

{ a:c = 5 } = A

如果A中不存在a,即A.a不存在,则a = 5,反之a = A.a的值,而c是a的别名,即c的值也和a一样

let的话,和var差不多,都是声明变量的,不过同个变量名不能使用 let 重复声明

如:

let a = 5;
let a = 6; // 会报错 Identifier 'a' has already been declared

而 var 可以重复声明同个变量名的变量

var b = 5;
var b = 6;

还有一个const,声明常量的,常量的值声明后不可赋值改变,不然就会报

const c = 5;
c = 6; // 会报错 Assignment to constant variable

arr.forEach(fn)

fn是一个函数,arr的每个元素都会经过这个函数处理, v是数组中每个元素,i是对应数组下标

(v, i) =>  === index ? v.isActive = true : v.isActive = false

相当于

function(v, i){
  return i === index ? v.isActive = true : v.isActive = false
}

--↓↓👍点赞是回答的动力哦

回到顶部