首页 > 程序开发 > web前端 > HTML 5 >

第十一天H5进阶

2017-05-25

第十一天H5进阶。H5运算符。

运算符

- 一元运算符

+ --> 相当于数学中的正号

- +号不会对数值产生影响

- --> 相当于数学中的符号

- -号可以对当前的数值取反

- 注意:

-当对非数字进行一元加或减运算时,它会自动将值转型为Number类型

所以我们可以通过为一个变量添加一个+的形式将一个变量转换为Number类型

- 例子:

var str = "123"; // string

str = +str; //Number

- 自增和自减

- 自增,表示在原有值的基础自增1,比如:2自增一次以后变成3

-自增有两种:

- 前++ --> ++a;

- 后++ --> a++;

- 自减,表示在原有值的基础自减1,比如:2自减一次以后变成1

-自减有两种:

- 前-- --> --a;

- 后-- --> a--;

- 区别:

- 无论是前置的加加和后置的加加,调用以后原来的变量会立即自增1。

只不过前置的加加和后置的加加的本身的值是不同的,

后置++的值是原变量的值,

前置++的值是变量自增以后的值

- 例子:

例一:

var a = 123;

a++; //123

console.log(a); //124

例二:

var a = 123;

++a; //124

console.log(a); //124

- 自减亦如此,无论是前--还是后--,原变量的值都会自减1,

而前--的值是变量自减以后的值,后--是变量的原值。

var x=4;

x= x++ + ++x +x*10;

//x = 4 + 6 + 60

console.log(x);

- 逻辑运算符

- 非 !

- 使用非运算,可以对一个值进行取反操作。

- 如果对true进行非运算,则会变成false,如果对false进行非运算会变成true。

- 如果对一个非布尔类型的值进行非运算,则会先将其转换为布尔类型,在取反。

所以我们经常为一个非布尔类型的值取两次反,从而将其转换为一个布尔类型

- 例子:

var str = "hello"; //string

str = !!str; // boolean

- 与 &&

- 与可以对与符号两次的值进行与运算

- 如果两侧值都是true,则返回true --> true && true

- 如果两侧的值有false,就返回false --> false && true false && false

- JS中与是短路的与,一旦第一个值为false,则不会在看第二值,第二值如果是一个表达式,则不会执行。

- 对非布尔值也可以进行与运算,它会将非布尔值转换为布尔值,进行与运算,但是它会返回原值,而不是布尔值

- 如果两个值都为true,则返回第二个。

- 如果两个值中有false,则返回靠前的false。

- 或 ||

- 或可以对符合两侧的值进行或运算

- 如果两个值都为false,则返回false --> false || false

- 只要有一个true,则返回true --> false || true true || true

- JS中的或是一个短路的或,如果第一个值为true,则不会在去看第二个值。

- 对非布尔值也可以进行或运算,它会将非布尔值转换为布尔值,再进行或运算,但是它会返回原值,而不是布尔值

- 如果两个值都为false,则返回第二个

- 如果有true,则返回靠前的true

- 关系运算符

- 使用关系运算符可以比较两个变量之间的大小关系

- >

- 判断一个值是否大于另一个值

- >=

- 判断一个值是否大于或等于另一个值

- <

- 判断一个值是否小于另一个值

- <=

- 判断一个值是否小于或等于另一个值

注意:

- 如果是非数字的值进行比较时,它会将它们转换为数字然后在比较

- 如果是两个字符串进行比较,它不会将它们转换为数字,而是比较它们的字符编码

所以这里注意,可以能会出现不可预期的结果,尽量不要比较两个字符串的大小。

- 相等 ==

- 判断符号两侧值是否相等,如果相等则返回true,否则返回false

- 相等会对两侧值进行类型转换,如果转换后相等,它也会返回true

- 不等 !=

- 判断符号两侧值是否不等,如果不等返回true,否则返回false

- 不能也会自动对值进行类型转换,如果转换后相等,他也会返回false

- 全等 ===

- 判断符号两侧值是否全等,和相等类似,只不过全等不会自动转换类型

如果比较的两个值类型不同,直接返回false。

- 全不等 !==

- 判断符号两侧的值是否全不能,和不等类型,只不过全不等不会自动类型转换,

如果比较的两个值的类型不同,直接返回true。

- 注意:

1.undefined值衍生自null值,所以做相等判断时会返回true,全等时会返回false

2.NaN不与任何相等包括它本身,NaN == NaN --> false

- 可以通过isNaN()来判断一个值是否是NaN,

如果是它会返回true,否则返回false。

- 赋值运算符:

=

+=

- 例子:

var a = 123;

a += 5; // a = a+5;

-=

*=

/=

- 例子

var a = 9;

a /= 3 ; //a = a/3;

%=

- 赋值运算符可以将符号右侧的值,赋值给左侧的变量

- 条件运算符(三元运算符,三目运算符)

语法:

表达式1?表达式2:表达式3

- 执行顺序:

1.先执行表达式1,

2.根据表达式1的执行结果来决定执行表达式2还是3

如果表达式1的执行结果为true,则执行表达式2,并将结果返回。

如果表达式1的执行结果为false,则执行表达式3,并将结果返回。

- 优先级:

- 在JS中使用运算符中会有一个执行的顺序问题,优先级高的会先运算,低的后运算。

- 实际上和数学中是基本一致的比如:先乘除、后加减

- 我们有一个运算符的优先级的表,表格中的内容,越靠上优先级越高,优先级越高越先执行

优先级相同的,按照从左往右的顺序执行,但是这个表中的内容不需要记忆,

不清楚的时候,使用小括号来改变优先级!

- 隐式的类型类型转换

- 其他类型转换为String

- 变量 = 变量+"";

- 任何数据和字符串进行加法运算,都会转换为字符串,然后做拼串操作

- 底层也是使用的String()

- 其他类型转换为Number

- 变量 = +变量;

- 使用一元的加会使变量自动转型为Number类型

- 底层也是使用的Number()

- 其他类型转换为Boolean

- 变量 = !!变量;

- 我们可以为一个变量做两次取反操作,来使其变为Boolean

- 底层也是使用的Boolean()

相关文章
最新文章
热点推荐