JS复习
运算符
一元运算符
只操作一个值或者对象
delete
· 删除对以前定义的对象属性或方法的引用
· 删除数组中的元素,不改变数组的长度
· var声明的对象不能删除
· function定义的函数和函数参数不能删除
· 删除的是一个左值,删除非左值会返回true
· 删除不存在的属性,返回true
void
· 对任何值返回 undefined
· 该运算符通常用于避免输出不应该输出的值,例如HTML中的a标签
· 没有返回值的函数真正返回的都是 undefined。
自增/自减
位运算符
按位与 &:两个操作数对应位置上 都是相同才返回1
按位或 | :
· 两个操作数相应位置上有一个是1就返回1
按位异或 ^:
· 两个操作数对应位置上有一个是1(不能同时为1)就返回1,两个都是1返回0
按位非 ~:
· 改变操作数的符号(+/-)并且减一
左移 << :
· a<<b;将a的所有二进制位左移b(0-31)位,新来的二进制用0补全,舍弃第32位
· 将一个数左移1位相当于乘以2,左移2位相当于乘以4,以此类推(2的n次方)
右移 >> :
· a>>b;将a的所有二进制位右移b(0-31)位
? 左边由操作数的符号决定
? 正数:用0补最高位
? 负数:用1补最高位
? 右边溢出的忽略
· 将一个数右移1位相当于除以2(忽略余数),右移2位相当于除以4,以此类推(2的n次方)
无符号右移 >>>:
· 与>>一样,只是左边做高位一直补0,与符号无关
布尔运算符
与(AND)&&
· 都为true才返回true
· 第一个为真返回第二个,第一个为假,返回第一个
· 第一个是对象,第二个是布尔值,返回对象
· 有一个值是undefined返回错误
或(OR)| |
· 有一个为true的就返回true
· 第一个为真,返回第一个,第一个为假返回第二个
· 有一个值是undefined返回错误
非(NOT)!
· 返回的一定是布尔值
各类型转换布尔的值
· Undefined false
· Null false
· Boolean 结果等于输入的参数(不转换)
· Number 如果参数为 +0, -0 或 NaN,则结果为 false;否则为 true。
· String 如果参数为空字符串,则结果为 false;否则为 true。
· Object true
简单运算符
算数运算符
· +,-,*,/
关系运算符
· > , < , >= , <= , == , === , != , !==
三元运算符
· 条件运算符
· a?b:c
? a如果为true执行b,否则执行c
赋值运算
· =
? 右值赋给左值
· *= , /= , += , -= , %= , <<= , >>= , >>>=
逗号运算符
用逗号运算符可以在一条语句中执行多个运算。
逗号运算符常用变量声明中
语句
选择语句
if
· if(强制转换为boolean类型)
switch...case
循环语句(迭代语句)
do...while
while
for
for...in
· 遍历对象
· for(var key in obj){}
break
跳出循环
continue
结束本次循环 ,进行下一次循环
函数
函数是一组可以随时随地运行的语句。
函数是 ECMAScript 的核心。
函数声明
直接量
· function fun(){}
· 不能出现在循环/判断/try/cache/finally/while语句中
表达式
· var fun = function(){}
? 不会被声明提前
对象创建
· var fun = new Function("")
? 不会被声明提前
调用
函数可以通过其名字加上括号中的参数进行调用
无参数可以不写括号(最好不要这样做)
不声明函数返回值,返回undefined
四种调用方法
· 作为函数
? fun();
? this指向window
· 作为方法
? o.fun()
? this指向调用方法的对象o
? 方法就是保存在一个对象属性的函数
? 意味着该函数被当作一个方法,而不是普通的函数
? 属性访问
? obj.m()
? obj['m']()
? f().m()
? 在f函数调用结束后,继续调用返回值中的m()函数
? 意思一样
? 方法链
? 当方法的返回值是一个对象,可以继续调用其他方法
? 有了方法链就可以进行链式编程
? this关键字
· 作为构造函数
? this指向new创建的对象
? var o = new fun()
· 上下文调用模式
? call(this指向的对象,[1],[2],,,[n])
? apply(this指向的对象,[arr])
实参和形参
实参如果比形参 少,多余的形参赋值为undefined
如果形参比实参少,多余的实参舍弃
检测形参
· function fun(a,b){b = b | | []};如果没有传b的值 就不b赋值为一个新数组
· 这种方法需要将可选实参放置在最后
arguments
· 函数的一个属性
· 把函数传入的实参保存在arguments这个伪数组内
· 有length属性