块函数

发布于 2020-07-04  106 次阅读


/*
* ES5中,规定函数不能定义在块级作用域内,只能定义在顶层作用域或者函数作用域内
* 但是浏览器为了兼容旧的版本代码,仍然支持在块级作用域内定义函数
* ES6中明确前允许了可以在块级作用域内定义声明函数
*/
{
	function fun(){
		console.log("This is a Function");
	}
}
{
	let fun4=function (){
		console.log("This is a Function");
	}
}
if( false ){
	function fun2(){
		console.log("This is a Function2");
	}
}
console.log( fun );  //输出函数代码
console.log( fun2 ); //undefined
console.log( fun3 ); //undefined
//console.log( fun4 ); //ReferenceError:fun4 is not defined
{
	function fun3(){
		console.log("This is a Function3");
	}
}
/*
* ES6在块级作用域声明函数,是类似var的形式声明的,
* 由于fun2的结果为false,虽然被定义了,但是无法赋值
*/

/*
* 为了实现在块级作用域内声明函数的目的
* 要使用函数表达式声明函数,而不是函数声明式声明函数
* 
* 函数表达式 --> var fun=function (){}
* 函数声明式 --> function fun(){}
*/
/*
* 定义块作用域变量必须加上大括号{}
*/
if( true )let x=0; //报错
//严格模式下的函数定义也是
"use strict";
if( true )function fun(){} //报错

网上好多学习总结都是一模一样的,难道总结的收获都是一模一样的吗,一个字、一个标点都没有不一样。这种总结恶心死了。对自己有什么收获???

和阮一峰老师的教程一模一样,连什么转载什么都不写,那是自己的吗??


一个人只有亲眼看到自己伤疤的时候才知道什么是痛,什么是对与错。