目录
一、 函数
函数就是封装了一段可重复调用执行的代码块。以实现大量代码的重复使用。
例如: function getsum(start,end)
{
for (var i = start; i < end; i++)
{
sum+=i;
}
console.log(sum);
}
调用: getsum(1,100);
- 函数名一般以动词命名,函数不调用是不会自己执行的
另一种函数声明的方式(常见)
var shuchu = function(){ //(匿名函数)
console.log('一个函数表达式');
}
shuchu(); //shuchu是一个变量
上述中 function 函数名括号里的输入就是 形参。
调用函数时括号里的是 实参。
形参用于接受实际参数,类似于一个变量(不用声明)不调用则不知道值是什么。
2. 函数可以调用另一个函数
3. 函数名()=return 后面的结果
同时 return 后面的代码将不进行执行,同时结束当前函数体的代码。
return只能返回一个值,以最后一个为准。(可返回一个数组)
arguments的使用
当不知道有多少个参数传递时,用arguments来获取
arguments对象中储存了传递的所有实参
function getsum();
{
console.log(arguments);
}
getsum(1,2,3,3,3);
实际其是一个伪数组的形式,函数的内置对象可直接使用
具有length属性 console.log(arguments.length)
按索引方式存储数据 ,可按数组方式输出和遍历
不具有数组push,pop等方法
二、预解析
js引擎运行is分为两步:预解析,代码执行
1、 预解析 js引擎会把js里面所有的 var 还有 function 提升到当前作用域的最前面。
)把所有的变量声明提升到当前的作用域前面 不提升赋值操作
)函数声明提升到当前作用域的最前面 不调用函数
2、代码执行 从上往下
var a = 18;
fun();
function fun(){
var b = 9;
console.log(a);
console.log(b);
var a = '123';
}
//相当于以下代码
var a;
function fun(){
var b;
var a;
b = 9;
console.log(a);
console.log(b);
a = '123';
}
a = 18;
fun();
输出underfind 9
f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
var a = b = c = 9;
//相当于 var a = 9 ; b = 9 ; c = 9; b 和c被直接赋值当全局变量看
//集体声明 var a = 9 , b = 9 ,c = 9;
console.log(c);
console.log(b);
console.log(a);
}
相当于以下代码
function f1() {
var a;
a = b = c = 9;
console.log(c);
console.log(b);
console.log(a);
}
f1();
console.log(c);
console.log(b);
console.log(a);
输出 9 9 9 9 9 报错defind;
祝你学习快乐!