js-运算符:https://www.yuque.com/zhuchaoyang/wrif6k/iixc9x
算数运算符
+、-、*、/加、减、乘、除%、~/模(取余)、取整(取出小数点后边) ```dart print(1 + 2); //3 print(1 - 2); //-1 print(1 * 2); //2 print(4 / 2); //2.0 浮点数
print(10 % 7); //3 整型 print(8 ~/ 3); //2 整型
<a name="tCj4j"></a># 比较(关系)运算符- `==` 、`!=` 、`<` 、`>` 、`<=` 、`>=````dartprint(2 == 2); //trueprint(2 != 2); //falseprint(2 < 3); //trueprint(2 > 3); //falseprint(2 <= 2); //trueprint(2 >= 3); //false// print('a' >= 'b'); //报错print(1 == '1'); //falseprint(0 == false); //falseprint(null == null); //trueprint([] == []); //falseprint({} == {}); //false
逻辑运算符
||、&&、!或、且、非
// print(1 || 2); //报错print((3 > 1) || (3 < -1)); //trueprint((3 > 0) && (3 < 6)); //trueprint(!true); //false
赋值运算符
= 、+= 、-= 、*= 、/= 、%= 、~/
var a = 1; print(a); //1int c1 = 10; print(c1 += 1); //11int c2 = 10; print(c2 -= 1); //9int c3 = 10; print(c3 *= 2); //20int c4 = 10; print(c4 %= 3); //1int c5 = 10; print(c5 ~/= 3); //3// int c6 = 10; print(c6 /= 1); //报错 因为除法得到的值是doubledouble c7 = 10; print(c7 /= 2); //5.0
?? 、??=
判断对象是否为null,是null就赋值后面参数
print(null ?? 1); //1var b1 = 1;b1 ??= 2; //等同于 b1 = b1 ?? 2;print(b1); //1var b2;b2 ??= 2;print(b2); //2var b3 = null;b3 ??= 2;print(b3); //2
递增++、递减—
var a = 10;// ++a; a++; //把a累加一个1,相当于a = a+1// --a; a--; //把a累减一个1,相当于a = a-1var a1 = 10, a2 = 10;print('${++a1}, ${a2++}'); //11, 10print('${a1}, ${a2}'); //11, 11
前置和后置的区别: 在没有赋值操作,前置和后置是一样的。 但在赋值操作时,如果递增或递减运算符前置,那么前置的运算符会先累加或累减再赋值,如果是后置运算符则先赋值再累加或累减。
条件表达式
其实就是三元运算符
语法:条件 ? 成立执行 : 不成立执行
var a = 5;var b = a > 1 ? true : false;print(b); //true// 如果三元运算符中的某一部分不需要任何处理,可以使用 nullvar c = a > 10 ? true : null;print(c); //null//如果赋值是基于判定是否为null,应考虑使用 ??var n = 1;var m = n ?? 2;print(m); //1
?
条件成员访问 和 . 类似,但是左边的操作对象不能为 null,
例如 foo?.bar 如果 foo 为 null 则返回 null,否则返回 bar 成员
var s1 = 'a';print(s1.length); //1print(s1?.length); //1var s2;// print(s2.length); //报错print(s2?.length); //null
is 、is! 、as 类型判断、类型转换
is 判断是否是某个类型,返回true或者false。as 是类型转换,其相当于 :先检测 其是不是,然后再调用的一种简写。但是还不是完全一致,当不是的时候,as 会抛出exception。
print(1 is int); //trueprint(1 is! int); //falsevar m1 = {};if (m1 is Map) {m1['age'] = 18;}print(m1); //{age: 18}// 简写为:var m2 = {};(m2 as Map)['age'] = 18;print(m2); //{age: 18}
