javascript ? : 多条语句

zhongdaiqi · 2016-08-10 07:26 · 10 次阅读
Uncategorized

var m=1>0?’好’ :’不好’

这段相当于

if(1>0){

m=’好’ ;

}else{

m=’不好’;

}

复杂的:

i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;

测试结果:

输入:i:-10;len:5
T.html:12 结果:i:0;len:5
T.html:6 输入:i:-9;len:5
T.html:12 结果:i:0;len:5
T.html:6 输入:i:-8;len:5
T.html:12 结果:i:0;len:5
T.html:6 输入:i:-7;len:5
T.html:12 结果:i:0;len:5
T.html:6 输入:i:-6;len:5
T.html:12 结果:i:0;len:5
T.html:6 输入:i:-5;len:5
T.html:12 结果:i:0;len:5
T.html:6 输入:i:-4;len:5
T.html:12 结果:i:1;len:5
T.html:6 输入:i:-3;len:5
T.html:12 结果:i:2;len:5
T.html:6 输入:i:-2;len:5
T.html:12 结果:i:3;len:5
T.html:6 输入:i:-1;len:5
T.html:12 结果:i:4;len:5
T.html:6 输入:i:0;len:5
T.html:12 结果:i:0;len:5
T.html:6 输入:i:1;len:5
T.html:12 结果:i:1;len:5
T.html:6 输入:i:2;len:5
T.html:12 结果:i:2;len:5
T.html:6 输入:i:3;len:5
T.html:12 结果:i:3;len:5
T.html:6 输入:i:4;len:5
T.html:12 结果:i:4;len:5
T.html:6 输入:i:5;len:5
T.html:12 结果:i:5;len:5
T.html:6 输入:i:6;len:5
T.html:12 结果:i:6;len:5
T.html:6 输入:i:7;len:5
T.html:12 结果:i:7;len:5
T.html:6 输入:i:8;len:5
T.html:12 结果:i:8;len:5
T.html:6 输入:i:9;len:5
T.html:12 结果:i:9;len:5

样本:

输入:i:-4;len:5
结果:i:1;len:5

i = -4 ? -4 < 0 ? Math.max( 0, 5 -4 ) : -4 : 0;

第一步

i=-4?-4<0?1:-4:0;

第二步:

i=-4<0?1:-4;

i=1;

详细参考:

先看javascript对于布尔值的处理约定

布尔值代表真或假、开或关、是或否,只有两个值 true、false。 在JavaScript中,任意的JavaScript值都可以转换成布尔值: undefined ,null ,0 ,-0 ,NaN ,“” 会被转换成false; 所有其他值,包括所有对象(数组)都会转换成true 假值(falsy value)--false和上面六个可以转换成false的值; 真值(truthy value) -- true和可以转换成true的值; 在JavaScript期望使用一个布尔值时,假值会被当成false,真值会被当成true。 if(o !== null)......只有当o不是null时才会执行之后的代码 if(o)......o不是任何假值都会执行之后的代码 然后再看运算优先级 最基木的运算符优先
级就是所谓的“先乘除,后加减”。对于优先顺序处于同一层次上的运算符,按照从左
到右出现的顺序计算。下面给出javascript定义的所有运算符的优先级。
运算符 优先顺序
成员选择、括号、函数调用、数组下标 1
!、-(单目减)、++、--、typeof, new, void, delete 2
*、/、% 3
+、- 4
<<、>>、>>> 5
<、<=、<、>= 6
==、!=、===、!==、 7
& 8
^ 9
| 10
&& 11
|| 12
?: 13
=、+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、^=、|= 14
逗号运算符 (,) 15

评论

还没有评论,登录后来说两句。