首页 > 专栏 > 前端 > 文章详情
js 中在函数外访问函数内变量的方法总结 发布于:2021-03-05 18:27:39   原创发表   查看:2  讨论:0
一、带返回值的函数。wBp易塔云建站-模板下载,web开发资源,技术博客
 
function Hi(){wBp易塔云建站-模板下载,web开发资源,技术博客
    var name = "blue";wBp易塔云建站-模板下载,web开发资源,技术博客
    return name;wBp易塔云建站-模板下载,web开发资源,技术博客
}wBp易塔云建站-模板下载,web开发资源,技术博客
var b = Hi();wBp易塔云建站-模板下载,web开发资源,技术博客
console.log(b);//blue 也可以写成 console.log(Hi());
wBp易塔云建站-模板下载,web开发资源,技术博客
我们按照Mozilla官网说明进行案例解释:wBp易塔云建站-模板下载,web开发资源,技术博客
 
function makeFunc(){wBp易塔云建站-模板下载,web开发资源,技术博客
    var name = "Mozilla";wBp易塔云建站-模板下载,web开发资源,技术博客
    function displayName(){wBp易塔云建站-模板下载,web开发资源,技术博客
        console.log(name);wBp易塔云建站-模板下载,web开发资源,技术博客
    }wBp易塔云建站-模板下载,web开发资源,技术博客
    return displayName;wBp易塔云建站-模板下载,web开发资源,技术博客
}wBp易塔云建站-模板下载,web开发资源,技术博客
var myFunc = makeFunc();wBp易塔云建站-模板下载,web开发资源,技术博客
myFunc();
wBp易塔云建站-模板下载,web开发资源,技术博客
外部函数makeFunc()里面声明了一个本地变量,local variable,然后是一个inner Function。最后返回的是一个函数,这个函数指向inner Function。在外部初始化outter Function,得到的值传给变量myFunc。这里的变量存在着一个函数体,打印后显示一个函数。最后调用,结尾为:wBp易塔云建站-模板下载,web开发资源,技术博客
    □:找到makrFunc()wBp易塔云建站-模板下载,web开发资源,技术博客
    □:找到return的上一步,inner Function → displayNamewBp易塔云建站-模板下载,web开发资源,技术博客
    □:inner Function函数体内没有找到name变量,继续往该inner Function的作用域链中查找,也就是上一级。wBp易塔云建站-模板下载,web开发资源,技术博客
    □:找到后把结果依次打印出来。wBp易塔云建站-模板下载,web开发资源,技术博客
如果返回的是一个本地变量,那么可以改为:wBp易塔云建站-模板下载,web开发资源,技术博客
 
function makeFunc(){wBp易塔云建站-模板下载,web开发资源,技术博客
    var name = "Mozilla";wBp易塔云建站-模板下载,web开发资源,技术博客
    function displayName(){wBp易塔云建站-模板下载,web开发资源,技术博客
        console.log(name);wBp易塔云建站-模板下载,web开发资源,技术博客
    }wBp易塔云建站-模板下载,web开发资源,技术博客
    return name;wBp易塔云建站-模板下载,web开发资源,技术博客
}wBp易塔云建站-模板下载,web开发资源,技术博客
var myFunc = makeFunc();wBp易塔云建站-模板下载,web开发资源,技术博客
console.log(myFunc);//Mozilla
wBp易塔云建站-模板下载,web开发资源,技术博客
二、使用对象。wBp易塔云建站-模板下载,web开发资源,技术博客
wBp易塔云建站-模板下载,web开发资源,技术博客
很多具有相同属性和方法的对象可以称之为类,js另外的一种使用方式就是模仿其他oo语言的类概念。但是官方并没有对类进行定义(截止到ES5)。wBp易塔云建站-模板下载,web开发资源,技术博客
 
var person = new Object();wBp易塔云建站-模板下载,web开发资源,技术博客
person.name = "red";wBp易塔云建站-模板下载,web开发资源,技术博客
person.age = 29;wBp易塔云建站-模板下载,web开发资源,技术博客
person.sayHi = function(arg0,arg1,arg2){wBp易塔云建站-模板下载,web开发资源,技术博客
    alert("Hi, " + this.name)wBp易塔云建站-模板下载,web开发资源,技术博客
}wBp易塔云建站-模板下载,web开发资源,技术博客
console.log(person.name);
wBp易塔云建站-模板下载,web开发资源,技术博客
但是上面的方法不要再用了,都在用对象字面量形式:wBp易塔云建站-模板下载,web开发资源,技术博客
 
var person = {wBp易塔云建站-模板下载,web开发资源,技术博客
    name : "blue",wBp易塔云建站-模板下载,web开发资源,技术博客
    age : 29,wBp易塔云建站-模板下载,web开发资源,技术博客
    title : "yyy",wBp易塔云建站-模板下载,web开发资源,技术博客
    sayName : function(){wBp易塔云建站-模板下载,web开发资源,技术博客
        alert(this.name)wBp易塔云建站-模板下载,web开发资源,技术博客
    }wBp易塔云建站-模板下载,web开发资源,技术博客
}wBp易塔云建站-模板下载,web开发资源,技术博客
console.log(person.name);

评论

  • 匿名