part2 javascript函数

函数

定义一个函数

  • 定义方式一

绝对值函数

function abs(x){
   if(x>=0){
       return x;
  }else{
       return -x;//return 代表函数结束
  }
}
  • 定义方式二

var abs = function(x){
   if(x>=0){
       return x;
  }else{
       return -x;//return 代表函数结束
  }
}

function(x)是一个匿名函数,但是可以把结果赋值给abs,tongguoabs调用函数

调用函数

abs(10)   //10
abs(-10)  //10

参数问题:javascript可以传任意个函数,也可以不传参

var abs = function(x){
   //手动抛出异常
   if(typeof x!='number'){
       throw 'not a number'
  }
   if(x>=0){
       return x;
  }else{
       return -x;//return 代表函数结束
  }
}
  • arguments(数组)

    是js免费赠送的关键字,可以很方便的找到最大的一个参数的值:

    x = findMax(1, 123, 500, 115, 44, 88);

    function findMax() {
       var i, max = arguments[0];
       
       if(arguments.length < 2) return max;

       for (i = 0; i < arguments.length; i++) {
           if (arguments[i] > max) {
               max = arguments[i];
          }
      }
       return max;
    }

     

变量的作用域

在javascrpit中,var定义变量实际是有作用域的,

假设在函数体中声明,则在函数体外不可以使用(闭包)

function ar(){
   var x = 1;
   x=x+1;
}
x = x + 2;//报错

如果两个函数使用了相同的函数名,只要不在一个函数体内就可用

方法

定义方法

方法就是把函数放在对象里面,只有:属性+方法

var ar = {
   name:'ar';
   birth: 2000;
   age:function(){
       var now = new Date().getFullYear();
       return now-this.birth;
  }
}
//属性
ar.name
//方法,必须要带括号
ar.age()

this代表,无指向性的,默认只想调用它的那个对象

 function getAge(){
       var now = new Date().getFullYear();
       return now-this.birth;
  }
var ar = {
   name:'ar';
   birth: 2000;
   age:getAge
}
//ar.age()     ke
//getAge()     NaN window

call()apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。

function myFunction(a, b) {
   return a * b;
}
myObject = myFunction.call(myObject, 10, 2);     // 返回 20
function myFunction(a, b) {
   return a * b;
}
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray);  // 返回 20
  • apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。

  • 在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。

  • 在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。

 

箭头函数(没看懂)

ES6新增,好像是一个可以简便的函数

闭包

JavaScript 变量可以是局部变量或全局变量。

私有变量可以用到闭包。

function myFunction() {
   var a = 4;
   return a * a;
}//函数可以访问有函数内部定义的变量
var a = 4;
function myFunction() {
   return a * a;
}//访问外部定义的变量

==var a = 4; function myFunction() { return a * a; }==

JavaScript 内嵌函数

所有函数都能访问全局变量。

在 JavaScript 中,所有函数都能访问它们上一层的作用域。

JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。

该实例中,内嵌函数 plus() 可以访问父函数的 counter 变量:

function add() {
   var counter = 0;
   function plus() {counter += 1;}
   plus();    
   return counter;
}

 

 

posted on   阿娆要努力呀  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示