JavaScript中函数声明和函数表达式的用法区别

			function jsFun6(){	//函数声明和函数表达式的区别
				
				test1();//函数声明提升,在执行代码之前会先读取函数声明,不会报错
				function test1(){//函数声明方式创建函数
					alert("测试1");
				}
				
				//test2();报错,函数还不存在
				console.log(test2)//不会报错,变量提升只是提升变量的声明,并不会把赋值也提升上来,输出undefined
				var test2=function(){
                                     alert("测试2");
				};//使用函数表达式创建一个匿名函数(实际是以变量test3命名的函数)
				test2();//不会报错,以创建函数
							
				var test3=function(){
					alert("测试3");
				}();//加了括号立即执行
				
		  	        var test4 = 12;// !注意看,一旦变量被赋值后,将会输出变量.
//如果变量未赋值,将输出函数,相当于 var a=function(){console.log(100);}; var a; a();//100

                    //函数提升优先级高于变量提升,所以函数先提升,然后变量提升覆盖之前的函数声明,表                
                    //现为变量
		   	        function test4() {
				    alert("测试4");		   		
		       	        }
		   	        console.log(test4); //12

				var test5="test5_1";
				(function(){//自执行匿名函数
					//js中的变量搜索顺序:找变量时,先找局部变量,如果没有局部变量;再找全局变量。
			            alert(test5);//此时的test5为局部变量的提升,undefined
			            var test5="test5_2";
				 })();
							
			}

 

注意:

1:变量赋值并没有被提升,只是声明被提升了,此时的输出提升的变量为undefined。

      但是,函数的声明不一样,函数体也会一同被提升。

2:js中的变量搜索顺序:找变量时,先找局部变量,如果没有局部变量;再找全局变量。(注意,局部的变量提升)

3:js中函数提升优先级高于变量提升(同名变量和函数,函数先提升之后变量提升,后面变量的赋值会将同名函数覆盖,而函数体已提升,不会再执行函数体覆盖变量值)。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值