函数:是封装一个特定功能的代码块
函数不调用就不会执行
一、函数的参数
在函数内部有两个特殊的对象:arguments和this
javascript传不定参
arguments
Javascript函数的独特之处在于你可以给函数传递任意参数,不造成错误,因为参数实际是保存在arguments这个类数组对象中。
function go(a,b,c){
console.log(a)
console.log(a+b);
console.log(a+b+c)
console.log(arguments)
}
go(10,10,30,50)
函数参数的个数保存在函数的length属性中
function test(a,b,c){
console.log(a);
}
console.log(test.length)
函数的参数是局部变量 局部变量没有才会找全局变量
var x = 20;
function go(x,y){
console.log(x);
console.log(x+y)
}
go(30,40) //70
console.log(x);
console.log(y); //Uncaught ReferenceError: y is not defined
this
函数内部的另一个特殊对象是this,其行为与java和C#中的this大致类似。
换句话说,this引用的是函数据以执行的环境对象——或者
也可以说this值(当在网页的全局作用域调用函数时,this对象引用的就是window)
来看下面的例子
var obj = {
name:"html",
sayName:function(){
console.log(this.name)
}
}
var skill= {
name:"javascript",
saySkill(){
console.log(this.name)
}
}
obj.sayName()
skill.saySkill()
二、声明函数
function go(x){
console.log(x)
}
go(10)
/* Tip:不建议使用这种方式声明 */
go(10)
/* Tip:推荐使用这种方式声明
好处:不用再注意位置关系了
*/
function go(x){
console.log(x);
}
构造函数
不推荐使用
var go = new Function('a','b','alert(a*b)')
go(4,5)
三、返回值
返回值就是函数的执行结果,js中函数可以没有返回值
使用return语句后,返回值后面的语句不会执行
function show(){
return "hello world"
console.log(3)//不会执行
}
console.log(show())
function go(x){
console.log(x)
}