日常--js 提升

在js中存在变量提升和函数提升两种。提升就是在没有声明变量或者函数的情况下便使用了,但是在使用后又声明或者是赋值了(直接赋值了,就提升为全局变量或者全局函数),这时就会出现提升,即声明置顶,所以此时的变量值是undefined。

console.log(variable);
var variable = '我是全局中的变量';     // undefined
等于
var variable
console.log(variable);
 variable = '我是全局中的变量';     // undefined

而函数提升则分为两种,根据自身的定义方式:声明式即function functionName(){ },定义式即var functionName=function(){ }。
定义式跟变量提升一样

console.log(variable);
var  variable=function(){
	console.log('nnn')
}  //  undefined
等于
var  variable
console.log(variable);
variable=function(){
	console.log('nnn')
}  //  undefined

声明式则直接提升了整个定义。

console.log(variable);
function  variable(){
	console.log('nnn')
}  //  f variable()
等于
function  variable(){
	console.log('nnn')
} 
console.log(variable);   //  f variable()

其中函数提升的优先级也高于变量提升。

function a(s){
	console.log(s);
	var s=2;
	console.log(s);
	function s(){};
	console.log(s)
};
a(1)   //ƒ s(){}   2   2
等于
function a(s){
	function s(){};
	var s;
	console.log(s);
	s=2;
	console.log(s);
	console.log(s);
};
a(1)

而函数声明比变量声明更优先。所以function a(s){ function s(){}; var s; console.log(s); //f s(){} };
注意这里只是声明优先级更高,赋值还是遵循后来者居上哦。函数之间和函数之间、变量和变量之间的(同类同名)声明、赋值都是后来者居上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值