一元操作符
只能操作一个值的操作符焦作一元操作符,一元操作符是ECMAScript中最简单的操作符
1.递增和递减操作符
前置操作符 --m ++m
var m = 3 ; --m 等同于 m = m - 1 此时m已经变成2;后续操作再引用到m时候就会当成2来用;
后置操作符 m-- m++
var m = 3; m++ 等同于 m = m + 1 ***但是!!!递增或者递减操作是在包含他们的语句被求值之后才执行的. 就是如果有 m++或者m-- 先把运算过程做完 然后再对m的值进行修改!***
一元加和减操作符
数值类的变成+-数 非数值NaN或者false=>0 true =>1
位操作符
暂留
布尔操作符
1,逻辑非适用于js中的任何值,无论这个值是什么数据类型,这个操作符都会返回一个布尔值.
双非逻辑符 取正
2 逻辑与 && 由两个符号构成 表示并且的关系
3 乘性操作符 包括 乘法 除法 求模
如果是非数值类的情况下会执行自动的类型转换.(后台先会使用Number()转型函数将其转换为数值)也就是说 : 空字符串会被当做0 布尔值true会被当做1.
1,乘法
正常使用乘法 如果数字超过js表示范围则会返回 Infinity 或 -Infinity
如果一个是NaN则返回NaN
Infinity0=NaN
Infinity非零数值=Infinity或-Infinity取决于正负号
Infinity*Infinity=Infinity
如果有一个操作数不是数值 则后台调用Number()转换为数值 然后进行上面的乘法规则;
2.除法
与乘法基本类似 但是
Infinity/Infinity=NaN
3求模 %
加性操作符
1,加法 +
如果有一个操作数是NaN则返回NaN
数值相加 或者 从左到右依次运算 有字符串则往右走的时候开始拼接字符串 如 (3+3+'3'+3+3) = '6333' 因为到'3'的时候就已经变成一个字符串了 然后往后继续加都是字符串拼接 除非小括号包起来() (3+3+'3'+(3+3))='636'
2,减法 -
一方NaN则返回NaN
关系操作符 < > =< =>
相等操作符
相等和不相等--先转换在比较,
全等和不全等--仅比较而不转换
1,相等和不相等
null 和 undefined是相等的
比较相等性之前不能讲null和undefined转换成其他任何值
如果有一个NaN则返回false不相等返回true NaN不等于NaN
2,全等和不全等
只有在两个操作数未经转换就相等的情况下返回true,
8 条件操作符 ?
三元运算符
9 赋值操作符 =
把右侧的值赋给左边的变量
10 逗号操作符
使用逗号操作符可以再一条语句中执行多个操作
语句
if语句
do-while语句
do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件.换句话说.在对条件表达式求值之前.循环体内的代码至少会被执行一次.
while 语句
while是钱测试循环语句,在循环体内的代码被执行之前,就会对出口条件求值.因此,循环体内的代码有可能永远不会被执行.
for语句
for语句也是一种前测试循环语句,但它具有在执行循环值钱初始化变量和定义循环后要执行代码的能力,
for-in 语句
for-in是一种精准的迭代语句,可以用来枚举对象的属性,(就是key)
label语句
使用label语句可以再代码中添加标签.以便将来使用.
break和continue语句
break和continue语句用于在循环中精确控制代码的执行.七中.break语句会立即退出循环.强制继续执行循环后面的语句,
而continue语句虽然也是立即退出循环,单退出循环后会冲循环的定不继续执行.
break和continue语句都可以与label语句联合使用,从而返回代码中特定的位置.这种联合使用的情况多发生在循环嵌套的情况下.
就是可以停止在标签写的位置 整个双层循环都停下来了 不会出现只停下内部循环 外部循环还继续执行的情况
with语句
with语句的作用是将代码的作用域设置到一个特定的对象中.
定义一个with语句的目的只要是为了简化多次编写同一个对象的工作
switch语句
switch语句与if语句的关系最为密切.而且也是在其他与剧中突变使用的一种流控制语句;
case里面不仅可以是常量也可以是表达式
函数!
可以通过函数封装任意多条语句,而且在任何地方,任何时候都可以调用执行. 用关键字 function 声明,活跟一组参数以及函数体.
1.参数
arguments对象只是与数组类似(它并不是Array实例),因为可以使用方括号语法访问她的每一个元素(即arguments[0] [1])使用length可以获得传进来多少个参数
2没有重载
名字相同的函数后面会覆盖前面 执行的时候会执行第二个方法
小结
1.五种基本类型 undefined null Boolean Number String
2.js中,没有为整数和浮点数专门定义的数据类型 统一用Number定义
3.只有一种复杂类型数据Object ([] 数组也属于Object)
4.有很多语句: if for switch
5.无需指定函数的返回值,因为任何js函数都可以在任何时候返回任何值
6.未指定返回值的函数返回的是一个特殊的undefined值
7.js中没有函数签名的概念,因为其函数参数是以一个包含零或多个值的数组的形式传递的
8.可以向js函数传递任意数量的参数,并且可以通过arguments对象来访问这些参数
9.由于不存在函数签名的特性,js的函数不能重载