了解以下javascript代码

时间:2015-01-12 09:00:59

标签: javascript

我有跟随我遇到的javascript。我不了解代码执行的流程。

var val = 'ap';

function func() {
    if (!val) {
        var val = 'ple';
    }
    console.log(val);
}
func();
console.log(val);

我认为的输出是,' ap'然后' ap'。 但我得到了'然后' ap'。 这是怎么回事?

2 个答案:

答案 0 :(得分:3)

以下行中的变量val

var val = 'ple'

正被提升到该功能的顶部。

val s(函数内部)值为undefined falsey ,这就是if条件成功的原因,因为!falsetrue,因此} 里面的<{em>>函数设置为val。它看起来大致像

'ple'

请记住,javascript中的范围不是块范围。相反,你要做的是设置已经声明的function func() var val; // val = undefined if(!val) { // it's still undefined and !undefined is true val = 'ple'; // so this code executes } console.log(val); // 'ple' }

val

答案 1 :(得分:0)

Javascript具有功能范围而不是阻止范围,直到我们在ES6中获得let语句...