最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js中作用域与函数闭包实例讲解

来源:动视网 责编:小采 时间:2020-11-27 20:01:50
文档

js中作用域与函数闭包实例讲解

js中作用域与函数闭包实例讲解:本文主要和大家分享js中作用域与函数闭包实例,1.作用域很简单,只是简单的点一下,js的作用域没有块级作用域,只有全局作用域与函数作用域;例如:if(true){ var a=100; } console.log(a);在java或者c中大括号就是块外边是获取不到的,但是在js中是可以的,
推荐度:
导读js中作用域与函数闭包实例讲解:本文主要和大家分享js中作用域与函数闭包实例,1.作用域很简单,只是简单的点一下,js的作用域没有块级作用域,只有全局作用域与函数作用域;例如:if(true){ var a=100; } console.log(a);在java或者c中大括号就是块外边是获取不到的,但是在js中是可以的,


本文主要和大家分享js中作用域与函数闭包实例,1.作用域很简单,只是简单的点一下,js的作用域没有块级作用域,只有全局作用域与函数作用域;

例如:

if(true){

var a=100;

}

console.log(a);

在java或者c中大括号就是块外边是获取不到的,但是在js中是可以的,就相当于

var a;

if(true){

a=100;

}

这里的a就是全局作用域;凡是在函数外定义的变量都是全局作用域。

特例:

function Loga(){

a=100

}

console.log(a);

这里的a也是可以获取到的,当在函数内部不带var 就直接声明变量时也是把父作用域当作作用域,但是不建议这么写,一般需要声明定义。

对于函数作用域通过字面理解就是定义在函数内部的变量就是在函数内部起作用;

函数作用域与全局作用域的区别是,函数作用域内可以调用全局作用域的变量并进行修改,但是全局作用域不能调用函数作用域内定义的变量,这里定义很关键(是不是修改),这里涉及到作用域链,就是变量依次可以访问父级作用域的变量,通俗讲就是从内向外可以访问但是从外向内是不可以访问的。

2.闭包

闭包的概念没有一个确切的说法,下面来说一下闭包的使用场景

a.函数作为返回值;

b.函数作为参数传递

例子:

 function F1(){
 	var a=100
	return function(){
	console.log(a);//a是自由变量
	}
	}
	var a=200;
	var f=F1();
	f();

这是一个典型的闭包案例,返回值f为一个函数,执行环境是全局,但是生成环境是在F1中,这里函数的作用域就是F1,所以输出就是100;这里的a是自由变量,要去父作用域查找,就是F1.

第二中情况,函数作为参数传递

	function F1(){
	var a=100
	return function(){
	console.log(a);
	}
	}
	var a=200;
	var f=F1();
	function F2(fn){
	var a=300;
	fn();
	}
	F2(f);

很显然结果是一样的,理由同上,执行环境是F2,但是生成环境是F1,父作用域是F1,所以输出仍为100.

文档

js中作用域与函数闭包实例讲解

js中作用域与函数闭包实例讲解:本文主要和大家分享js中作用域与函数闭包实例,1.作用域很简单,只是简单的点一下,js的作用域没有块级作用域,只有全局作用域与函数作用域;例如:if(true){ var a=100; } console.log(a);在java或者c中大括号就是块外边是获取不到的,但是在js中是可以的,
推荐度:
标签: js 详解 实例
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top