JavaScript语句.png

条件语句

if语句

switch语句

switch 在比较值时,使用的是全等操作符 === ,因此不会发生类型转换
switch的判断条件 expression 可以是StringNumberBooleanchar枚举nullundefined
switch (expression) {
  case value1:
  // 代码块
  break;
  case value2:
  // 代码块
  ...
  
  default 
  // 代码块
}

迭代语句

while语句

do-while语句

for语句

for-in 语句

用来枚举对象的属性,枚举顺序不可预测
  1. 一般用于遍历对象的可枚举属性。
  2. 遍历数组索引

for-in、Object.keys 和 Object.getOwnPropertyNames 对属性遍历有什么区别?

  • for-in 会遍历自身及原型链上的可枚举属性,可以使用hasOwnProperty()方法过滤掉原型链上的可枚举属性
  • Object.keys 会将对象自身的可枚举属性的 key 输出
  • Object.getOwnPropertyNames 返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不会获取原型链上的属性。)组成的数组。
function Obj() {
    this.a = "red";
    this.b = "black";
}

Obj.prototype.c = "blue";
let obj1 = new Obj();
for (let i in obj1) {
    console.log(i);
}
// a
// b
// c
console.log(Object.keys(obj1));//[ 'a', 'b' ]
console.log(Object.getOwnPropertyNames(obj1));//[ 'a', 'b' ]

for-of语句(ES6)

  1. for-of适用遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合.但是不能遍历对象
  2. 遍历数组元素值

其他语句

break和continue语句

  1. break 跳出当前循环且不再执行当前循环;continue 跳出当前循环进行下一次循环。
  2. break 若在switch 语句中,仅仅跳出当前所在switch 语句。

label语句

可以在代码中添加标签,以便将来使用。
应用场景:在嵌套循环中熟练应用 break, continue 与 Label 可以精确的返回到你想要的程序的位置。

let count = 0;
for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        if (i === 1 && j === 1) {
            break;
        }
        count++;
    }
}
console.log(count); // 7
//i = 0;i = 0 1 2
//j = 1;i = 0 1
//j = 2;i = 1 2
let count = 0;
outBreak:
    for (let i = 0; i < 3; i++) {
        for (let j = 0; j < 3; j++) {
            if (i === 1 && j === 1) {
                break outBreak;
            }
            count++;
        }
    }
console.log(count); //4

with语句

将代码的作用域设置到一个特定的对象中。主要目的是为了简化多次编写对同一个对象的操作。
严格模式下不允许使用 with 语句。
with会延长作用域。
大量使用 with 语句会造成程序性能下降。

let obj = {
    a: 123,
    b: 456,
};
let a = 2;
with (obj) {
    console.log(a);//123
}
let obj = {
    a: 123,
    b: 456,
};
console.log(obj.a);
console.log(obj.b);

//用 with 简化
with (obj) {
    console.log(a);
    console.log(b);
}

debugger 语句

用来产生一个断点,代码的执行会停在断点的位置,这时使用调试器来输出变量的值。

参考文章:https://segmentfault.com/a/11...


梁柱
135 声望12 粉丝