JavaScript中的复杂计算

JavaScript中的复杂计算,javascript,Javascript,我无法理解此代码: y -= (1 - (1770 - pencilY) / 225) * 140; 我对JS计算的理解是: y += 10; is equal to y = y + 10; 如果我说y=1-(1770-便士) 发生的事情是,(1770-pencilY)在根据1计算结果值之前首先计算,类似于y=1-1770的结果值-pencilY,但我仍然无法计算出复杂的方程,它太复杂了,我无法理解,有人能给我解释一下吗?Javascript使用此运算符优先级进行基本算术计算 括号 多重性

我无法理解此代码:

y -= (1 - (1770 - pencilY) / 225) * 140;
我对JS计算的理解是:

y += 10; is equal to y = y + 10;
如果我说
y=1-(1770-便士)


发生的事情是,
(1770-pencilY)
在根据
1
计算结果值之前首先计算,类似于
y=1-1770的结果值-pencilY
,但我仍然无法计算出复杂的方程,它太复杂了,我无法理解,有人能给我解释一下吗?

Javascript使用此运算符优先级进行基本算术计算

  • 括号
  • 多重性
  • 分部
  • 加成
  • 减法
(=是优先级更低的赋值运算符)

将首先计算优先级较高的操作。 回到你的例子:

valOne = (1770 - pencilY) 
(最里面的括号具有最高优先级)

(除法的优先级高于减法)

(此减法运算符出现在第二个括号内,因此其优先级高于乘法)

(最外层的算术运算的优先级高于-=赋值运算符)

最后:

 y = y - ValFour

Javascript将此运算符优先级用于基本算术计算

  • 括号
  • 多重性
  • 分部
  • 加成
  • 减法
(=是优先级更低的赋值运算符)

将首先计算优先级较高的操作。 回到你的例子:

valOne = (1770 - pencilY) 
(最里面的括号具有最高优先级)

(除法的优先级高于减法)

(此减法运算符出现在第二个括号内,因此其优先级高于乘法)

(最外层的算术运算的优先级高于-=赋值运算符)

最后:

 y = y - ValFour

这解释了不同运算符的求值顺序

按顺序:

var a = 1770 - pencilY;
var b = a / 225;
var c = 1 - b;
var d = c * 140;
var y = y - d;
这就解释了不同操作符的求值顺序

按顺序:

var a = 1770 - pencilY;
var b = a / 225;
var c = 1 - b;
var d = c * 140;
var y = y - d;
y-=(1-(1770-便士)/225)*140

为了:

  • (1770年-便士)
  • (1770-便士)/225
  • 1-(1770-便士)/225
  • (1-(1770-便士)/225)*140
  • y-(1-(1770-便士)/225)*140
  • y-=(1-(1770-便士)/225)*140

    为了:

  • (1770年-便士)
  • (1770-便士)/225
  • 1-(1770-便士)/225
  • (1-(1770-便士)/225)*140
  • y-(1-(1770-便士)/225)*140
  • y+=10等于
    y=y+10

    是的,所以我们可以将您的表达式改写为

    y = y - ((1 - (1770 - pencilY) / 225) * 140);
    
    这太复杂了,我无法理解

    好吧,通过添加括号来帮助清楚嵌套。在你的例子中,已经有很多了,所以我们只需要找出
    -
    /
    之间的区别,然后划分。所以

    y = y - ((1 - ((1770 - pencilY) / 225)) * 140);
    
    现在,当对它求值时,它基本上是从左到右的,操作数在运算之前(严格求值)。所以一步一步发生的是

    y*=referenceTo(“y”)
    y*'=参考(“y”)
    y'=valueOf(y*')/y
    a=1//1
    b=1770//1770
    pencilY*=参考(“pencilY”)
    pencilY=valueOf(pencilY*)//pencilY
    c=b-便士//1770-便士
    d=225//225
    e=c/d/(1770-便士)/225
    f=a-e//1-((1770-便士)/225)
    g=140//140
    h=f*g/(1-(1770-便士)/225)*140
    转让给(y*,g)
    
    y+=10等于
    y=y+10

    是的,所以我们可以将您的表达式改写为

    y = y - ((1 - (1770 - pencilY) / 225) * 140);
    
    这太复杂了,我无法理解

    好吧,通过添加括号来帮助清楚嵌套。在你的例子中,已经有很多了,所以我们只需要找出
    -
    /
    之间的区别,然后划分。所以

    y = y - ((1 - ((1770 - pencilY) / 225)) * 140);
    
    现在,当对它求值时,它基本上是从左到右的,操作数在运算之前(严格求值)。所以一步一步发生的是

    y*=referenceTo(“y”)
    y*'=参考(“y”)
    y'=valueOf(y*')/y
    a=1//1
    b=1770//1770
    pencilY*=参考(“pencilY”)
    pencilY=valueOf(pencilY*)//pencilY
    c=b-便士//1770-便士
    d=225//225
    e=c/d/(1770-便士)/225
    f=a-e//1-((1770-便士)/225)
    g=140//140
    h=f*g/(1-(1770-便士)/225)*140
    转让给(y*,g)
    
    对我来说没有
    -1
    。这是我的家庭作业。@很抱歉,你编辑了错别字
    y=y-((1-(结果值1770除以225))*140)
    @AstroCB i neva说或意思是
    这工作不正常:
    ,请返回原始行:和平。对我来说没有
    -1
    。这是我的家庭作业。@你编辑了对不起,错别字
    y=y-((1-(结果值1770除以225))*140)
    @AstroCB i neva说或意思是
    这工作不正常:
    ,请返回原始行:D.和平。