2

我正在读一本关于单页应用程序的书,在某些时候有这个 for...in 循环:

KEYVAL:
for(key_name in arg_map){
    if(arg_map.hasOwnProperty(key_name)){
        if(key_name.indexOf('_') === 0) continue KEYVAL;

        anchor_map_revise[key_name] = arg_map[key_name];

        key_name_dep = '_' + key_name;
        if(arg_map[key_name_dep]){
            anchor_map_revise[key_name_dep] = arg_map[key_name_dep];
        }
        else{
            delete anchor_map_revise[key_name_dep];
            delete anchor_map_revise['_s' + key_name_dep];
        }
    }
}

真正引起我注意的是KEYVAL循环之前的那个词。它是一个变量吗?它代表什么?它是干什么用的?这个语法是什么意思?这个词只出现在包含的代码中的两个地方,并且在整个示例中再也没有出现过。

我一直在寻找很多试图弄清楚这一点,但到目前为止我还没有找到任何信息。有人可以帮我吗?

谢谢你。

4

3 回答 3

3

KEYVAL:是此处的标签,用于在循环中迭代操作。看文档

它类似于 GOTO 语句。

它在您的代码中的作用是当此条件变为真时

if(key_name.indexOf('_') === 0) continue KEYVAL;

它转到标签KEYVAL:并再次运行循环,而不执行此行下方的代码。

于 2013-07-27T04:56:35.220 回答
2

它是一种label行号,但未锁定到行位置。

继续像 GOTO 一样跳转到这个标签。

满足此条件时:

if(key_name.indexOf('_') === 0) continue KEYVAL;

JavaScript 从上面的那个标签继续。

于 2013-07-27T04:55:48.093 回答
1

这是为了休息和继续。

检查 MDN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

于 2013-07-27T04:56:51.167 回答