/*
变量的提升:
javascript引擎工作方式是:先解析代码,获取所有被声明的变量,然后再一行一行的运行。
这造成的结果就是 所有的变量的声明语句都会被提升到代码的头部,这种机制叫做变量的提升。
*/
/*
变量作用域
*/
/*
一等公民:在js世界中函数不仅具有传统函数的功能(声明和调用)还能够赋值
传参,返回,这样的函数称为一级函数或一等公民;
*/
var num = 0;
console.log(num);//0
var func = function(){ console.log("ahaha") }
console.log(func); //ƒ (){ console.log("ahaha") }
/*
函数可以直接当作另一个函数的参数
*/
function func1(){
console.log("我是凉白开啊")
}
function func2(func){
func();
}
func2(func1);
/*
函数名提升:通过function命令声明的函数,其声明语句会被提升到代码头部
*/
/*
函数默认值:用于如果参数不给值,那么就可以设置默认值
*/
function func3(num){
(num!=undefined&&num!=null)?num = num : num = 1;
console.log(num)
}
func3(0);//0
func3();//1
func3(2);//2
//变量提升小例子
var a = 0;
test();
function test(){
console.log(a); //undefined
var a = 2;
console.log(2); //2
}
/*
以上代码可以变为
var a
function test(){
var a
console.log(a);
a = 2;
console.log(2);
}
a = 0
test()
所以第一个输出undefined, 第二个输出2
*/
网友评论