gpt4 book ai didi

JavaScript - 为什么加法赋值运算符不能按预期工作?

转载 作者:行者123 更新时间:2023-12-03 07:54:33 24 4
gpt4 key购买 nike

我目前正在使用一些动画来增强网站。

我尝试了这段代码:

// Opacity is 0 in the beginning. Set 
// in CSS.
// 1. Parameter: Boolean - true if making the
// element visible; false if making it vanish.
// 2. Parameter: Object

var changeOpacity = function(direction, element) {
var css = element.style;
var goStep = function(signedStep) {
css['opacity'] += signedStep;
changeOpacity(direction, element);
};

if (direction) {
if (css['opacity'] < 1.0) {
setTimeout(function() {
goStep(0.1);
}, timeStep);
}
} else {
if (css['opacity'] >= 0.1) {
setTimeout(function() {
goStep(-0.1);
}, timeStep);
} else {
css['display'] = 'none';
}
}
};

没有成功。

我在代码中写了一些console.logs:赋值后'opacity'始终保持在0.1。

我期望的是:0.0 - 0.1 - 0.2 - 0.3 ...

现在我使用这段代码:

// ...
var goStep = function(signedStep) {
css['opacity'] = +css['opacity'] + signedStep;
changeOpacity(direction, element);
};
// ...

工作正常。但我仍然想知道为什么使用组合赋值加法运算符失败。

有人有想法吗?

最佳答案

您正在使用数字添加字符串,因此在第一种情况下您实际上是在连接值

请参见此处:https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/Assignment_Operators#Addition_assignment

第二种方法有效,因为您将 css['opacity'] 转换为数字:+css['opacity']

试试这个:

    var test = "0.1",
test2 = "0.1";
signedStep = 0.1;

test += signedStep;
alert(test+" is a "+typeof test);
test2 = +test2 + signedStep;
alert(test2+" is a "+typeof test2);

关于JavaScript - 为什么加法赋值运算符不能按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com