为什么我不能放置一个相等 = 而不是两个 == [重复]

why i cannot place one equal = instead of two == [duplicate]

提问人:redskysun 提问时间:4/28/2022 最后编辑:M. Justinredskysun 更新时间:11/18/2023 访问量:37

问:

当我在两个元素之间放置一个“=”而不是两个或三个相等的字符时,程序出错并且无法正常工作 我想知道为什么我不能使两个不同类型的元素彼此相等一个等号(=),但我可以用三个或两个,但它们不是同一类型 看看我的代码:

const progress=document.getElementById('progress')
const prev=document.getElementById('prev')
const next=document.getElementById('next')
const circles=document.querySelectorAll('.circle')

let currentActive=1

next.addEventListener('click',()=>{
    currentActive++
  
    if(currentActive>circles.length){
        currentActive=circles.length
    }
    update()
})

prev.addEventListener('click',()=>{
    currentActive--
    if(currentActive<1){
        currentActive=1

    }
    update ()


})

function update(){
circles.forEach((circle,idx)=> {
    
    if(idx<currentActive){
        circle.classList.add('active')
    }else{
        circle.classList.remove('active')
    }
    
})

    const actives=document.querySelectorAll('.active')
    progress.style.width=(actives.length - 1) / (circles.length - 1) * 100 + '%'
    
    if(currentActive=== 1){
        prev.disabled=true
    }else if(currentActive === circles.length){
        next.disabled=true

    }else{
        prev.disabled=false
        next.disabled=false
    }
}

current active 是一个包含数字的变量,circles.length 是一个包含数字的元素。 虽然它们不是同一类型,但当我放三个等号时,程序运行正确,但当我放一个等号时,它就不行了。 它应该是相反的,因为它们不能是同一类型。

JavaScript 平等

评论

2赞 UnholySheep 4/28/2022
一个是作业,两个是比较。两件完全不同的事情。因此,您的问题非常令人困惑===
2赞 merryweather 4/28/2022
我认为你混淆了(分配)、(松散平等)和(严格平等)。======
0赞 ShadowRanger 4/28/2022
如果您用于赋值,您怎么看不出需要不同的运算符来执行相等性测试?允许在重叠的上下文中进行赋值和相等性测试,它们需要不同的运算符。=

答:

0赞 pankaj girotra 4/28/2022 #1

= 是一个赋值运算符,它将右手值分配给左手变量,另一侧 == 或 === 是比较运算符,用于检查 LHS 是否等于 RHS。因此,如果要比较这些值,请使用 == 或 ===。

注意: == -> 它只是检查值。 === -> 检查对象类型和值

评论

0赞 redskysun 4/28/2022
所以你是说当我们使用 === 或 == 时,它只比较它们而不分配任何东西?