if语句
if(){
}else{
}
或者if(){
}else if(){
}else{
}
switch语句
switch(){
case():
statement;
break;
case():
statement;
break;
}
while语句(前测试循环语句)
while(expression){
statement;
}
例:
var i = 10;
while(i>0){
console.log(i);
i--;
}
控制台会输出10,9...1
do-while是后测试循环语句
do{
statement;
}while(expression);
for语句(也是前测试循环语句)
1)for(var i=10;i>0;i--){
console.log(i);
}
与while语句类似,先判断,输出,再i--,然后重新判断输出...
2)遍历数组的用法
var arr = [1,2,4,6];
for(var i = 0, len = arr.length; i < len; i++){
console.log(arr[i]);
}
for...in语句
以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。
语法:
for (变量 in 对象)
{
在此执行代码
}
var obj = {
name: 'test';
color: 'red';
day: 'sunday';
number: 5;
}
for (var key in obj) {
console.log(obj[key]);
}
关键字break与continue
1)for(var i=0.i<10;i++){
if(i%4===0){
continue;
}
console.log(i);
}
此时打印的值为1,2,3,5,6,7,9,没有4和8,也就是说continue的作用是当满足条件时跳出本次循环,执行下一次循环
2)switch(){
case value1;
statement;
break;
case value2;
statement;
break;
}
当第一个条件满足执行后循环就会停止,不会再去管后面的内容,也就是说break会强制退出循环体,执行循环后面的语句
JS深拷贝
在JS里,除Array和Object之外的数据类型的复制可以直接通过等号=来实现,但Array和Object类型的数据通过等号只是起引用作用,指向的是同一块内存地址。当源数据改变,引用的数据也同时会发生变化。因此若要复制这两类数据类型就必须对它们里边的每一个元素都逐个进行复制。而浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用
- 可以用.concat复制,如var b=a.concat[]
- 可以用JSON.parse(JSON.stringify())
- 将旧数组中的每一个元素属性值依次拷给新数组,直接遍历
- 递归
具体可查看外婆的彭湖湾博客
参考文献
https://juejin.im/post/5a3a59e7518825698e72376b
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...in
https://blog.csdn.net/linusc/article/details/78710390
网友评论