在js执行中,js解析的准备工作首先有两点:
第一:把变量、函数表达式的声明提升到当前作用域的顶端。
第二:把函数赋值。
var k = "10";
var c = function(){};
浏览器的解析之前的工作是怎样的?看看下面的:
var k,c;
k = "10";
c = function(){};
刚刚提到了作用域,可能有人会问什么是作用域,其实js中的作用域就两种:全局作用域和局部作用域。了解作用域之前,我们得知道什么是全局变量和局部变量。
全局变量的声明不用var关键字,直接声明。
局部变量就是在函数内部的声明。
全局作用域就是指在整个应该程序中都是可用的。
局部作用域就是指函数内部声明的变量或函数。
下面来介绍下创建函数的三种方式:
1、函数表达式:是使用function关键字,没有函数名,赋值给一个变量的函数。
var f = function(){
}
2、声明函数:也叫函数声明,是使用function关键字+函数名声明的函数。
function fn(){
}
fn();
3、匿名函数:是使用function关键字但是没有函数名的函数。
(function(i){
console.log(i)
})(2)
()();这里的第一个()把匿名函数定义成函数表达式,第二个()表示立即执行。
随堂练习:
function compute(){
var count = arguments[arguments.length-1];
if(count =="+"){
for(var i = 1;i <arguments.length-1;i++){
arguments[0] = arguments[0]+arguments[i];
}
//console.log(arguments[0]); 可以打印出来,看下效果
}
else if(count =="-"){
for(var i = 1;i <arguments.length-1;i++){
arguments[0] = arguments[0]-argument[i];
}
//console.log(arguments[0]); 可以打印出来,看下效果
}
else if(count =="*"){
for(var i = 1; i <arguments.length-1;i++){
arguments[0] = arguments[0]*argument[i];
}
//console.log(arguments[0]); 可以打印出来,看下效果
}
else if(count =="/"){
for(var i = 0;i <arguments.length;i++){
argument[0] = argument[0]/arguments[i];
}
//console.log(arguments[0]); 可以打印出来,看下效果
}
}
compute(1,2,3,"+");
compute(10,5,3,"-");
compute(6,10,3,"*");
compute(500,2,3,"/");
个人一点小小的见解,如有错误,欢迎指正,谢谢!