一、变量名的提升
运行中会经过代码的预解析和代码执行过程。
var num=123;
function foo(){
console.log(num); //undefined
var num=456;
console.log(num); //456
}
foo();
代码预解析过程会将变量声明和函数声明提升。如下:
var num;
function foo(){
var num;
console.log(num); //这里因为num只声明了,但是没有定义所以打印是undefined,并且这里找到的是函数foo中声明的变量,不是全局中的num。
num=456;
console.log(num); //这里由于给num赋值为456,所以打印456
}
num=123;
foo();
二、闭包的使用和功能
①闭包是为了实现私有访问的函数。
②写一个函数内定义一个新的函数,返回新函数,用新函数获得函数内的数据。
③写一个函数内定义一个对象,对象中绑定了多个函数,返回对象,利用对象的方法访问函数内的数据。
④过多使用闭包会造成内存泄漏,所以,当我们不再使用一个闭包的时候,将其赋值为null。
1、返回对象来达到获取函数内部的数据,并且修改:
function foo(){
var num=Math.random();
return {
get_num:function(){
return num;
},
set_num:function(value){
num=value;
}
};
}
var o=foo();
继续阅读与本文标签相同的文章
深入机器学习系列12-高斯混合模型
以假乱真:机器学习是怎么写出圣诞歌的?
-
服务器、云服务器、高防服务器都有什么优势呢?
2026-05-19栏目: 教程
-
我是如何把大象装进冰箱里的……
2026-05-19栏目: 教程
-
关于将Web项目部署到阿里云服务器-5个步骤搞定
2026-05-19栏目: 教程
-
阿里云创业孵化事业部总经理李中雨:经阿里巴巴孵化一年,企业成长6-7倍。
2026-05-19栏目: 教程
-
阿里云学生服务器搭建网站(1)-购买阿里云学生服务器
2026-05-19栏目: 教程
