函数:是封装一个特定功能的代码块
函数不调用就不会执行

一、函数的参数

在函数内部有两个特殊的对象:arguments和this

javascript传不定参


arguments

Javascript函数的独特之处在于你可以给函数传递任意参数,不造成错误,因为参数实际是保存在arguments这个类数组对象中。

  1. function go(a,b,c){
  2. console.log(a)
  3. console.log(a+b);
  4. console.log(a+b+c)
  5. console.log(arguments)
  6. }
  7. go(10,10,30,50)

image.png

函数参数的个数保存在函数的length属性中

  1. function test(a,b,c){
  2. console.log(a);
  3. }
  4. console.log(test.length)

image.png

函数的参数是局部变量 局部变量没有才会找全局变量

  1. var x = 20;
  2. function go(x,y){
  3. console.log(x);
  4. console.log(x+y)
  5. }
  6. go(30,40) //70
  7. console.log(x);
  8. console.log(y); //Uncaught ReferenceError: y is not defined

image.png

this

函数内部的另一个特殊对象是this,其行为与java和C#中的this大致类似。
换句话说,this引用的是函数据以执行的环境对象——或者
也可以说this值(当在网页的全局作用域调用函数时,this对象引用的就是window)
来看下面的例子

  1. var obj = {
  2. name:"html",
  3. sayName:function(){
  4. console.log(this.name)
  5. }
  6. }
  7. var skill= {
  8. name:"javascript",
  9. saySkill(){
  10. console.log(this.name)
  11. }
  12. }
  13. obj.sayName()
  14. skill.saySkill()

image.png

二、声明函数

  1. function go(x){
  2. console.log(x)
  3. }
  4. go(10)
  5. /* Tip:不建议使用这种方式声明 */
  6. go(10)
  7. /* Tip:推荐使用这种方式声明
  8. 好处:不用再注意位置关系了
  9. */
  10. function go(x){
  11. console.log(x);
  12. }

构造函数

不推荐使用

  1. var go = new Function('a','b','alert(a*b)')
  2. go(4,5)

image.png

三、返回值

返回值就是函数的执行结果,js中函数可以没有返回值
使用return语句后,返回值后面的语句不会执行

  1. function show(){
  2. return "hello world"
  3. console.log(3)//不会执行
  4. }
  5. console.log(show())
  6. function go(x){
  7. console.log(x)
  8. }

image.png