运算子事实上就是一种函数,有赋值运算子,比较运算子,算术运算子,位元运算子, 逻辑运算子, 字串运算子, 条件运算子等种类。像是 +(加), -(减), * (乘), /(除) , =(赋值) , !=(不等於) 还有好多好多运算子,它们都是函数。
就拿 +(加) 这个运算子当例子好了,你可以想像成这样的函数:
function + (a,b){
//返回a与b的和
}
如果我们想要3加上5的结果就要呼叫 + 这个函数,但是如果像下面每次执行加法都如此实在太麻烦了!
+(3,5)
而是用中缀表示法:
3 + 5
中缀表示法的意思是, 将你的函数名称写在两个参数中间。
前缀後缀也如此类推,
前缀表示法:
+3 5
後缀表示法:
3 5+
优先性:决定运算子的优先权,在不同种运算子间判断哪个运算子先做。
EX: *(乘) 的优先性高於 +(加), 所以``3 + 6 * 4``` 就是3 + 24 ,得到27。
相依性:决定运算方向是由左而右,还是由右向左。
(你可以这样想:如果有多个优先权相同的运算子就可以判断从哪里先做)
EX:
var a = 8 ;
var b= 5;
a = b = 7; // a 会是7
因为 = (赋值) 这个运算子的相依性是由右往左,b先被赋值为7,因为b是7,由右往左,a再被b赋值为7。
如图:最上面的运算子优先分数为21分,执行时优先权比它下面的20分的运算子们先做
这是JavaScript动态型别的一个特徵,不过有时候会有bug
EX:
var a= 1 + '2'
//12
// 隐含的强制转型成string 型别 ,想了解更多强制型转可以参考下面文章列
因为1被强制型转为 '1'
还有
7 < 4 < 1
//true
为甚麽是true呢?
因为 < (小於)这个运算是由左至右执行,7 < 4 会返回false,而这个false会被强制型转成0,
继续往右运算, 0 < 1,就会返回true,这是JavaScript的世界啊!懂了规则就觉得好像没那麽奇怪了。
但是强制型转还是有bug
EX:
Number(true); // 1
Number(false); // 0
Number(null); // 0
Number(undefined); // NaN
虽然null与false被转成数值都是0,但是如果用===(完全相等)
EX:
null === false //false
所以还是有点难懂www
你为什麽不问问神奇 JavaScript 呢?系列 第 8 篇
你懂 JavaScript 吗?#8 强制转型(Coercion)
运算式与运算子
前两天猴子先偷偷把之前编完的执行档拿来验证, 今天来把 Cross Compiler 的部分补完。 ...
暂定为手机游戏,那就让基本子弹自动射击(手机操控不意,让玩家只做简易核心的操作就好) ,先把上一篇制...
Elasticsearch/Solr/ELK Stash Caveat of using Elast...
今天要来介绍的也是回圈 一个更好用的多重选择-switch叙述 当程序有较多的叙述,有较多的选择时,...
前言 本篇会示范如何在 Ruby on Rails 中产 QR Code,可透过 rqrcode 或...