Jam*_*son 3 javascript math jquery
我正在使用Javascript为我正在进行的项目做一些数学计算,并且偶然发现了以下内容:
我正在计算结果列表中剩余的结果数量(有一个"加载更多"按钮)
代码如下:
if (data.length > startIndex + maxLoadAmount) {
var loadMoreButton = new LoadButton()
loadButton.ToLoad = data.length - startIndex + maxLoadAmount;
loadMoreButton.click(function () {
var amountOfCurrentWidgets = $(this).parent().children('.widget').length;
this.remove();
loadChildren(amountOfCurrentWidgets, selector, data, widgetType);
});
$(selector).append(loadMoreButton);
}
Run Code Online (Sandbox Code Playgroud)
当我跑步时,我对结果感到惊讶!
在特定测试中,有16个可用的小部件,当从索引0开始,最多显示5个时,结果为21.
我在追加之前将其跟踪到javascript执行减法.你可以在jsfiddle中重现它:http: //jsfiddle.net/JamesPattison/3hvr4vsr/
解决方法是用括号括起来,虽然我想我真正要问的是:
我疯了吗?
在JavaScript中,加法和减法具有相同的优先级,并且都具有从左到右的关联性.所以用你小提琴中的代码:
var x = 16, y = 0, z = 5;
var result = x-y+z; //16-0+5, expected by BODMAS: 16-(0+5) = 11
$('#results').html(result.toString())
Run Code Online (Sandbox Code Playgroud)
result 计算方式如下:
(16 - 0) + 5
Run Code Online (Sandbox Code Playgroud)
这就是它在JavaScript,Java,C,C++,C#以及我能想到的所有其他语言中的评估方式.
只有这样,这将是不同的破碎是,如果另外有一个更高的比减法的优先级,如乘法的作用:
16 - 0 * 5 => 16 - (0 * 5)
但事实并非如此.
Re BODMAS,它应该写成:
B O DM AS
当以这种方式编写时,这些助记符可能会产生误导,特别是如果用户不知道乘法和除法具有相同的优先级,加法和减法也是如此.
类似地,以下所有引用都表示在标准算术中,除法和乘法具有相同的优先级,加法和减法具有相同的优先级:
运营秩序: PEMDAS - purplemath.com:
记住操作顺序的常用技术是缩写"PEMDAS",它变成了"请原谅我亲爱的莎莉阿姨".它代表"括号,指数,乘法和除法,加法和减法".这告诉你操作的等级:括号超出指数,超出乘法和除法(但乘法和除法处于同一等级),这两个超出加法和减法(它们一起在最低等级)
规则是:
- 乘以从左到右分开.
- 从左到右加减.
这很难记住,所以这里有一个帮助你的首字母缩写词 - BODMAS.它的意思是:
其中除法和乘法具有相同的优先级,并且加法和减法具有相同的优先级,因此在每种情况下我们将它们括在一起.
| 归档时间: |
|
| 查看次数: |
3198 次 |
| 最近记录: |