在 js 函数中等于三元组



以下一段代码将图像旋转到一定角度,这给我们一种圆旋转的感觉在旋转图像的函数中,他们使用了三重"="符号(===)以及","(在下面的代码中更好地解释),有人可以解释函数中发生了什么吗提前致谢

var c=$(".round-slider");
$(".circle-1").on("click", function () { 
    "240" === c.attr("data-rotate").slice(3) && c.attr("data-rotate", "deg120"), 
    "-120" === c.attr("data-rotate").slice(3) && c.attr("data-rotate", "deg-240"), 
    "0" === c.attr("data-rotate").slice(3) && c.attr("data-rotate", "deg120"), 
    "360" !== c.attr("data-rotate").slice(3) && "-360" !== c.attr("data-rotate").slice(3) || (c.addClass("stopTransition"), 
    c.attr("data-rotate", "deg0"), 
    setTimeout(function () { 
        c.removeClass("stopTransition"), c.attr("data-rotate", "deg120") 
    }, 10)), 
    setTimeout(function () { 
        c.addClass("slide-3"), c.removeClass("slide-1 slide-2") 
    }, 15) 
})

这个函数是以我强烈反对的风格编写的;作者要么有独特的风格,要么是通过优化器运行的。

想象一下一个简单的if语句:

if (x === 3) x = 7;

您可以使用布尔值和运算符 (&&) 重写此值,因为如果前半部分为 false,则不会计算运算符的右半部分。(这称为短路评估。例:

(x === 3) && (x = 7);

所以这个函数只是一堆if语句,以一种不寻常的风格编写。

逗号而不是分号是一个奇怪的(尽管合法的)选择。在此特定函数中,您可以将这些逗号替换为分号,并且不会有功能更改。

( === ) 检查等于强数据类型兼容,但 ( == ) 检查数据类型兼容。

if( "10" == 10 ) {
    console.log( "this will be printed");
}

if( "10" === 10 ) {
  console.log( "this won't be printed");
}

" === " 做两件事,详细信息如下

  1. 匹配数据类型(字符串 = 字符串)
  2. 匹配值 ( "240" = "240" )

假设 c.attr("data-rotate").slice(3) 包含一个值 240,下面是访问该值的代码

var dataRotateValue= c.attr("data-rotate").slice(3);
if(dataRotateValue === "240") {
  console.log("hey value matched as well as data type")
}

上述值和数据类型匹配,我们的 if 块得到了真实的条件

最新更新