前言
经过一段时间的思考,接下来决定出一期督促自己学习系列的文章。这样不仅可以让自己浮躁的心平静下来,还能在分享的过程中学到更多的东西,欢迎各位小伙伴一起加入!
作为一名前端程序员,我决定从《JavaScript高级程序设计》一书开始,一方面巩固之前遗忘的知识点,另一方面加深自己对js的理解,写出漂亮的代码,哈哈。。。
(如文章内容涉及到侵权请及时联系我删除)
哈哈。。。小伙伴们五一过得咋样,我又回来啦!今天我们接着来学习。
一元操作符
1、递增和递减操作符
例:
var age = 29;
++age;
执行前置操作符的效果和下面的例子一样,
var age = 29;
age = age + 1;
递减同理,这里就不再累述了;
执行后置操作符和前置操作符语法不变,有个重要区别就是递增或者递减操作是在包含它们的语句被求值之后才执行的。
例:
var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; // 22
var num4 = num1 + num2; // 21
结果有所不同,原因就是num3中使用了num1的原始值,而num4中使用了递减后的值。
2、一元加和减操作符
一元加(+)表示:
var num = 25;
num = +num; // 25
对数值不会产生影响,对于非数值会和Number()一样进行相应的转换,
var s1 = "01";
var b = false;
s1 = +s1; // 1
b= +b; // 0
一元减操作符(-)表示:
var num = 25;
num = -num; // -25
对于非数值和加操作符一样的规则;
位操作符
用于最基本的层次,按内存中表示数值的位来操作数值。
例:数值18的二进制表示:
1 | 0 | 0 | 1 | 0 |
---|---|---|---|---|
2^4*1 | 2^3*0 | 2^2*1 | 2^1*1 | 2^0*0 |
16 | 0 | 0 | 2 | 0 |
负数18使用的格式是二进制补码,分3个步骤:
1.先求18的二进制码
2.求二进制反码
3.反码结果加1
按位非操作符(~) 波浪线表示
var num1 = 25;
var num2 = ~num1;
console.log(num2); // -26
本质:操作数的负值减1。
按位与操作符(&) 和号表示
在多个数值的对应位都是1时才返回1,任何一位是0,结果为0;
var result = 25 & 3;
console.log(result); // 1
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
------------------------------------------------
result = 0000 0000 0000 0000 0000 0000 0000 0001
按位或操作符(|) 竖线号表示
在多个数值的对应位有一个位是1就返回1,只有都为0的情况才返回0;
计算过程同上;
布尔操作符
1、逻辑非(!)
先转换成布尔值,再求反;
console.log(!fasle); // true
console.log(!NaN); // true
console.log(!333); // false
2、逻辑与(&&)
短路操作,前面条件为false就不会往下执行
var res = true;
var result = (res && someUndefined); // 发生错误
console.log(result); // 不会执行
var res = false;
var result = (res && someUndefined); // 不会发生错误
console.log(result); // false
3、逻辑或(||)
短路操作,前面为true就不会对之后的操作数求值。
var res = true;
var result = (res && someUndefined); // 不会发生错误
console.log(result); // true
var res = false;
var result = (res && someUndefined); // 发生错误
console.log(result); // 不执行
乘性操作符
1、乘法(*
),NaN计算返回NaN;
2、除法(/
),NaN计算返回NaN;零被零除,返回NaN;
3、求模(余数)(%
) ,除数为0,被除数有限大的数值,返回NaN;
加性操作符
1、加法(+
)
数值相加
var result = 5 + 5;
console.log(result); // 10
数值和字符串相加
var result = 5 + “5”;
console.log(result); // “55”
2、减法(-
)
如果是非数值,先转换成数值再计算;
例:
var result = 5 - ""; // 5,""被转换成了0
var result = 5 - null; // 5,null被转换成了0
关系操作符
小于(<
),大于(>
),小于等于(<=
),大于(>=
),非数值比较时先会转换成数值;
相等操作符
1、相等(==
)和不相等(!=
),同上
2、全等(===
)和不全等(!==
),不转换操作数,类型也要也要判断;
条件操作符
var max = (num1 > num2) ? num1 : num2;
赋值操作符(=
)等于号表示
复合赋值
var num = 10;
num += 10;
赋值操作符(,
)
var a = 1,b = 2,c = 3;
var res = (1,2,3,4,5); // 5 返回最后一项
语句
1、if 语句
if (...){
...
} else if (...) {
...
} else {
...
}
2、do-while语句
常用于循环体中的代码至少要执行一次的情形;
var i = 0;
do {
i += 1;
} while (i < 5);
3、while语句(循环体有可能不会被执行)
4、for 语句
for (var i = 0;i < 5;i++) {
...
}
5、for-in语句(枚举对象的属性)
for(var propName in window) {
console.log(propName);
}
6、label语句(代码中添加标签)
label: statement
start:for (...) {
...
}
7、break和continue语句
break语句会立即跳出循环,continue跳出循环从顶部继续执行;
与label语句联用:
var num = 0;
outer:
for (var i = 0;i < 10;i++) {
for (var j = 0;j < 10;j++) {
if (i==5 && j==5 {
break outer;
// continue outer;
}
num++;
}
}
console.log(num); // 55
8、with语句(代码作用域设置到特定对象中)
var s = obj.search.splice(1);
var a = obj.a;
var b = obj.b;
with(obj) {
var s = search.splice(1);
var a = a;
var b = b;
}
9、switch 语句
switch(...) {
case ... :
break;
case ... :
break;
...
default: ...;
}
函数
funticon sum(num1,num2) {
return num1+num2; // 位于return之后的语句不会执行
}
var res = sun(2,3);
console.log(res); // 5
参数(arguments
),arguments[0], arguments.length
没有重载
如果定义了两个同名函数,则名字属于后定义的函数;
今天就学习到这了,小伙伴们觉得还不错的帮忙点这个赞,让更多的童鞋看到,这样也会给我更多的鼓励,哈哈。。。加油