您的位置:首页 > Web前端 > JavaScript

JS IF 作用域

2017-09-12 14:39 183 查看
随笔记录一下JS 中使用域自动提升时的一些注意点:

/**
* Created by HuangSL on 2017/09/12.
*/
function testScope() {

var funInner = "Inner";
funcOut = "outer"; //没有 var 声明,会被自动提升到 全局作用域

if (true) {
var ifInner = "Inner if true"; //变量的作用域被自动提升到 testScope fun
ifOuter = "Outer if true"; //没有 var 声明,会被自动提升到 全局作用域
}

if (false) {
var ifInnerFalse = "Inner if false";//变量的作用域被自动提升到 testScope fun
ifOuterFalse = "Outer if false"; //可以防止变量的作用域被自动提升
}

console.log(funInner); //Inner
console.log(funcOut); //outer
console.log(window.funcOut); //outer
console.log(ifInner); //Inner if true
console.log(ifInnerFalse); //undefined
console.log(ifOuter); //Outer if true
console.log(window.ifOuter); //Outer if true
//console.log(ifOuterFalse);//ReferenceError: ifOuterFalse is not defined
}
testScope();

/* typeof 可以用来补全一些全局方法或变量 */
//console.log(globalFun);//ReferenceError: globalFun is not defined
console.log(typeof globalFun);// "undefined"
if (typeof globalFun === "undefined") {
globalFun = function () { //不使用 var ,如果变量已经存在,将不会被重复声明,可以防止某些变量重名而出错
console.log("this is my global function;");
}
}
console.log(typeof globalFun);// "function"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript