js的label标签语句与with语句的用法

/**
 * label标签语句
 * - 语法:
 *      标签名: 语句
 *      如:start: n = 1;
 *      上面标签start可以被之后的break或continue语句引用
 * - label标签语句一般都要与for语句等循环语句配合使用
 *   返回代码中的特定位置
 */
// 声明标签labelBreak1
labelBreak1:
    for (var i = 1; i <= 2; i++) {
        console.log(`i = ${i} 时:`);
        for (var j = 1; j <= 2; j++) {
            console.log(`i = ${i}, j = ${j}`);
            // 立刻会跳出labelBreak1标签标记的第一层循环
            // 结束整个循环
            break labelBreak1;
        }
    }
// 输出:
// i = 1 时:
// i = 1, j = 1

for (var i = 1; i <= 2; i++) {
    console.log(`i = ${i} 时:`);
    // 声明标签labelBreak2
    labelBreak2:
    for (var j = 1; j <= 2; j++) {
        console.log(`i = ${i}, j = ${j}`);
        for (var k = 1; k <= 2; k++) {
            console.log(`i = ${i}, j = ${j}, k = ${k}`);
            // 立刻会跳出labelBreak2标记的第二层循环,
            // 继续正常执行第一层循环
            break labelBreak2;
        }
    }
}
// 输出
// i = 1 时:
// i = 1, j = 1
// i = 1, j = 1, k = 1
// i = 2 时:
// i = 2, j = 1
// i = 2, j = 1, k = 1

// 声明标签labelContinue
labelContinue:
    for (var i = 1; i <= 2; i++) {
        console.log(`i = ${i} 时:`);
        for (var j = 1; j <= 2; j++) {
            console.log(`i = ${i}, j = ${j}`);
            // 立刻会跳到labelContinue标签标记的第一层循环,此时i会自动加1变成2
            // 继续执行第一层循环
            continue labelContinue;
        }
    }
// 输出:
// i = 1 时:
// i = 1, j = 1
// i = 2 时:
// i = 2, j = 1

/**
 * with语句
 * - 用于设置代码在特定对象中的作用域
 * 语法:
 * with (表达式) 语句
 */
var name = 'Leo';
// 用with(name)表示创建了一个名字为name的伪对象
// 在代码执行到 length 时,解释程序会检查 length
// 是否是该伪对象 name 的属性,在本例中显然是,因为
// 伪对象 name 是字符串类型的对象,拥有属性 length
// 最后返回该 name 的字符串长度为 3,其实际上与
// name.length 等效
with (name) {
    console.log(`name 为 '${name}' 的名字长度为 ${length} 个字符`); // name 为 'Leo' 的名字长度为 3 个字符
}

猜你喜欢

转载自www.cnblogs.com/goujian/p/11807086.html
今日推荐