当前位置: 首页 > article >正文

javascript第八个知识点:函数

如何定义函数?

//绝对值函数
第一种方法:
function abs(x){
    if(x>0){
        return x;
    }else if(x<0){
        return -x;
    }
}
第二种方法:
var abs = function(x){
    if(x>0){
        return x;
    }else if(x<0){
        return -x;
    }
}
调用函数:
abs(10);
abs(-10);

讲完了函数的定义与调用,我们来说说javascript的一些关键字:

arguments:将函数的所有参数看作一个数组里的元素

我们在浏览器控制台输入给函数输入参数,计算机就将输入的参数放入了arguments中。

 

rest:将除了x,y剩余的参数传入rest数组

 


变量的作用域:

  • 用var、let、const定义的变量拥有自己的作用域,出了自己的作用域就不管用了。

var:
  • 在函数中用var声明的变量在函数外就不管用了。

function example(){
    var x = 1;
    x = x + 1; //函数内
    console.log(x);
}
x = x + 2;     //函数外

 

  • 也就是说我们在两个函数里声明两个一样的变量是不冲突的

举个例子:

function example(){
    var x = 1;
}
function example(){
    var x = 2;
}
  • 另外,我们还会遇到外函数-内函数问题:

<script>
  function AreaTest(){//外部函数
    var outer = 1;//
    function InnerTest(){//内部函数
      var inner = 2;
      console.log("从内部引用inner:" + inner);
      console.log("从内部引用outer:" + outer);
    }
    console.log("从外部引用outer:" + outer);
    //console.log("从外部引用inner:" + inner); inner un defined
    InnerTest();//调用内部类
  }
  AreaTest();
</script>

我们将AreaTest看作外函数,InnerTest看作是内函数,那么内部可访问外部函数变量,外部则不可访问内部函数变量

let:
  • 用let定义的变量出了当前大括号就不管用了

 

const:
  • 我们一般用const来定义常量 --- 不可改变的变量

 

由上面写的代码可知,JAVA作为常量,那么在后续中就不能够改变了

方法的定义与调用

  • 由于对象的属性成键值对形式出现,且属性的值可以是任意类型,所以我们给age赋值一个方法

<script>
  var tianxuan = {
    name:'天地玄号',
    birth: 2020,
    age: function (){
         var now = new Date().getFullYear();
         return now - this.birth;
    }//给age属性赋值一个方法
  }
  console.log(tianxuan.age());
  console.log(tianxuan.name);
</script>

我们也可以将该方法抽取出来:

<script>
  var tianxuan = {
    name:'天地玄号',
    birth: 2020,
    age: getAge//通过age调用方法
  }
function  getAge(){
      var now = new Date().getFullYear();
      return now - this.birth;//当前对象
  }
  console.log(tianxuan.age());//对象调用方法必须要加上括号
  console.log(tianxuan.name);
</script>

这里的this关键字指的是当前对象,在上述代码中我们通过tianxuan这个对象调用方法,那么this指代的就是tianxuan


http://www.kler.cn/a/230098.html

相关文章:

  • redis 底层数据结构
  • 【Docker】常用命令汇总
  • springboot+redis+lua实现分布式锁
  • 【Nginx】核心概念与安装配置解释
  • Android 11 三方应用监听关机广播ACTION_SHUTDOWN
  • 所有位运算 详解
  • Keepalived服务日志导出配置
  • mysql8热备份
  • Python f-strings - PEP 498 - 字面字符串插值
  • Name or service not known问题解决和分析过程解析
  • 双面板设计的一套经验规则-笔记
  • 2024/2/5
  • redis:七、集群方案(主从复制、哨兵模式、分片集群)和面试模板
  • 《Docker极简教程》--前言--本书的目的和目标
  • 一句话总结Docker与K8S的关系
  • 分享springboot框架的一个开源的本地开发部署教程(若依开源项目开发部署过程分享持续更新二开宝藏项目PostgresSQL数据库版)
  • 挑战杯 python+大数据校园卡数据分析
  • 阅读笔记——《RapidFuzz: Accelerating fuzzing via Generative Adversarial Networks》
  • Android中AGP与Gradle、AS、JDK的版本关系
  • 【机器学习】机器学习简单入门
  • MongoDB从入门到实战之MongoDB工作常用操作命令
  • Vue3大事件项目(ing)
  • VSCode python插件:找不到自定义包导致语法解析失败
  • 龙测科技荣获2023年度技术生态构建奖
  • 【稳定性:数据库】聊聊DB慢查询
  • ElasticSearch查询语句用法