1.运算符
var a =123;
var result = typeof a;
console.log(result)
console.log(typeof result) string
result = true +1 result=2
非num 先转为number 然后运算。
result = null +1 2
result = nan+1 nan 任何数字和nan运算都是nan
result = ‘123’ + ‘456’ 123456
字符串汉字 “” 不能分行 分行会报错。
解决办法:
‘都是范德萨’+
‘sfdsfds’+
‘是梵蒂冈’
result = 123+‘1’ 1231 任何值和字符串运算 先转为字符串 在拼接
result = true+‘hello’ truehello
var a =123;
a=a+''
console.log(a)
console.log(typeof a) string 123
c=123
console.log('c='+c) c=123
c=1+2+'3' 33
console.log('c='+c)
c='1'+2+3 123
console.log('c='+c) 123
c=100 - '1'
console.log('c='+c) 99
除了加法 都会转为number 然后在运算
c=2 * '8' 16
c=2 * null 0
c=2 * 'a' nan
c=2 * undfined nan
console.log('c='+c)
var d ='123'
d=number(d)
d =d - 0 变为num -0 *1 /1
console.log(typeof d)
console.log(d)
一元运算符
- 正号
- 负号
var a =123;
a =+123
console.log('a='+a) 123
var a =123;
a =-123
a =true
a =-a -1
a='11'
a = +a; -0 *1比 简单 直接变数值型 -11
console.log('a='+a) -123
自增自减
++
var a =1;
a++; 2
++a; 2
console.log(a++) 先赋值 在自增 所以 a=1赋值这个地方 打印 再自增
console.log('a='+a) 自增以后然后,结果2
console.log(++a) 2
console.log('a='+a) 2
d=20;
var result =d++ + ++d +d 64
进去先赋值20 出来21 + 22 +22
d=20;
d =d ++ 直接进行赋值 20 没有加1
var number=10;
null --; 9
console.log('number='+number) ;
n 10
n1 11
n 12
n1 12
n 20
n2 19
n 18
n2 18
逻辑运算
! 非
&& 与
|| 或
var a= true;
a = !a;
console.log(a) ; false
var a= 1; 先变true
a = !a;
console.log(a) ; false
console.log(typeof a) boolean
装换bool值
var a= 1;
a = !!a;
console.log(a) 变为true
var result = true && true true
var result = true && false false
。。。。。
var result = false && false false 第一个为flase就不往下看了。 false
var result =false || false false
var result =true|| false true
var result =false || true true
var result =true || true true 第一个为true就不往下看了 true
var a= 1 && 2 先转boolean
console.log(a) ; 遇到1 true 在 遇到2 true 返回2
ar result =1 &&2 2
var result =0&&1 0
遇到false就停
var result =2 || 1 2 第一个为true就不往下看了 true
var result =nan || 1 nan false 1
var result ='' || 1 '' false 1
赋值运算符
=
+=
-=
*=
%=
关系运算符
var result =5>10; false
<
<=
var result =1>true; true和数字比较变 1 false
var result =1>‘0’; 1>0
var result =5>null; 5>0
var result =10>'hello'; 10 > nan 和nan比较永远 false
var result =‘5’<‘10’; 二面都是字符串 比较字符串的unnicode 的编码
var result =‘ab’<‘a’拿第一位比 第一位相等 继续比第二位 谁大水就大。
用来对英文的排序。
scriper
unicode
console.log('\2685')
16进制。
body
里面用十进制
⚅
相等运算符
==
console.log(‘1’=1) true ‘1’默认转为number
console.log(true=1) true
console.log(null==0) false
console.log(null == undfined) true null衍生过来的
console.log(nan='1') false nan不等于一切包括自己
var b=nan
console.log(b == nan) 无法判断 b=nan
console.log(isnan(b)) true
console.log('1' != 1)false
console.log('1' === 1)false 类型不行直接否
console.log(null === undfined) false
console.log(‘1’!== 1) true 不全等
条件运算符 三元运算符 三木运算符
条件表达式 ? 语句1 :语句2; true 1 false2
获取a,b最大值
var max = a>b? a:b ; max放返回值
获取a,b,c最大值
max = max>c? max:c ;
简写:
var max = a>b?(a>c?a:c):(b>c?b:c);
运算符优先级
,
&& > ||
代码块
{}
代码块包着的一起执行了。分组了