6 JavaScript函数&内置构造&函数提升&函数对象&箭头函数&函数参数&参数的值传递与对象传递

JavaScript函数:使用关键字function定义,也可以使用内置的JavaScript函数构造器定义

匿名函数:

函数表达式可以存储在变量中,并且该变量也可以作为函数使用。

实际上是匿名函数。

<body>

<p>函数存储在变量后,变量可作为函数使用:</p>
<p id="demo"></p>
<script>
var x = function(a,b){return a+b; };
document.getElementById("demo").innerHTML = x(1,2);
</script>

</body>

构造函数:

<body>

<p>JavaScrip 内置构造函数。</p>
<p id="demo"></p>
<script type="text/javascript" charset="utf-8">
    var multiply = new Function("a","b","return a*b");
    document.getElementById("demo").innerHTML = multiply(3,4);
</script>
</body>

另一种写法:

<body>

<p id="demo"></p>
<script type="text/javascript" charset="utf-8">
    var multiply = function(a, b) { return a*b };
    document.getElementById("demo").innerHTML = multiply(3,5);
</script>
</body>

函数的提升:

  • 提升是JavaScript默认将当前的作用于提升到前面去的行为,应用在变量的声明与函数的声明
  • JavaScript在执行代码之前会进行预编译,而预编译的作用就是将函数和变量的作用域提升至其对应作用域的最顶端
  • 因此,函数可以在声明之前调用

函数的自调用:

通过添加括号来说明他是一个函数表达式

<script>
(function () {
    document.getElementById("demo").innerHTML = "Hello! 我是自己调用的";
})();
</script>

函数对象:

  • 在JavaScript中使用typeof操作符判断函数类型将返回function,但是JavaScript函数描述为一个对象更加准确
  • JavaScript函数有属性和方法,arguments.length属性返回函数调用过程接收到的参数个数

箭头函数:默认绑定外层this的值,在箭头函数中this的值和外层的this是一样的

() => {}

函数参数:

  • JavaScript对函数参数的值没有进行任何检查
  • JavaScript函数参数与大多数其他语言的函数参数区别在于:它不关注参数个数与参数数据类型
  • 如果函数设置了过多的参数,参数将无法被引用,只能使用Arguments对象来调用
  • 没有设置时,参数默认为undefined
<body>

<p>设置参数的默认值。</p>
<p id="demo"></p>
<script>
function myfunction(x,y) {
    if(y == undefined){
        y = 0;
    }
    return x * y;
}
document.getElementById("demo").innerHTML = myfunction(4);
</script>

</body>

Arguments对象:

  • argument对象包含了函数调用的参数数组

通过Argumens对象找到参数中的最大值:

<script>
x = findMax(1,100,-200,101,1111,22112);

  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;

  }
document.getElementById("demo").innerHTML = x;
</script>

参数的值传递:

在函数外定义的参数,如果在函数中修改参数的值,将不会修改参数的初始值(或者说定义值)。

因此,JavaScript函数传值只是将参数的值传入函数,函数会另外配置内存保存参数值,所以并不会改变原参数的值

var x = 1;
// 通过值传递参数
function myFunction(x) {
    x++; //修改参数x的值,将不会修改在函数外定义的变量 x
    console.log(x);
}
myFunction(x); // 2
console.log(x); // 1

参数的对象传递:

在JavaScript中可以引用对象的值,因此我们在函数内部修改对象的属性就会修改其初始的值。

var obj = {x:1};
// 通过对象传递参数
function myFunction(obj) {
    obj.x++; //修改参数对象obj.x的值,函数外定义的obj也将会被修改
    console.log(obj.x);
}
myFunction(obj); // 2
console.log(obj.x); // 2

总结:

  • 参数的值传递,不改变变量的初始值
  • 参数的对象传递,改变对象的初始值

原文地址:https://www.cnblogs.com/ltfxy/p/11579211.html

时间: 2024-10-02 21:21:49

6 JavaScript函数&内置构造&函数提升&函数对象&箭头函数&函数参数&参数的值传递与对象传递的相关文章

Mysql函数(内置函数,自定义函数)

简述 SQL:结构化查询语言,是一门编程语言,是用于管理数据库的编程语言. 元素:数据,数据类型,变量,函数,流程控制,运算符,注释. 注释: 行: # –[空格] 块: /* */ select * from swpu_stu #where id=2; ; select * from swpu_stu -- where id=2; ; 结束符: select * from swpu_stu where id=2\g select * from swpu_stu where id=2\G 可以使

Python学习(五)函数 —— 内置函数 lambda filter map reduce

Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.filter.map.reduce 进行初步的学习. lambda 匿名函数 lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值. lambda语句构建的其实是一个函数对象,参考下例来感受下 lambda 匿名函数: 1 def f(i): # 用户自定义返回平方数 2 retur

函数-内置函数,匿名函数,嵌套函数,高阶函数,序列化

函数简单说明 # 函数即"变量" # 高阶函数 # a.把一个函数名当做实参传给另一个函数(在不修改被装饰函数的源代码的情况下,为其添加功能) # b.返回值中包含函数名(不修改函数的调用方式) ''' import time def bar(): print("in the bar!") time.sleep(2) def foo(func): start_time = time.time() func() #根据内存地址,执行代码 stop_time = tim

JavaScript之基础-9 JavaScript String(内置对象、String概述)

一.JavaScript 内置对象 内置对象 - 什么是内置对象? 内置对象就是ECMAScript标准中已经定义好的,由浏览器厂商已经实现的标准对象 - 内置对象中封装了专门的数据和操作数据常用的API - JavaScript中内置对象列表 - String.Boolean.Number.Array.Date.RegExp.Math.Error.Function.Object.Global 包装类型 - 什么是包装类型? 专门封装原始类型的数据,并提供对数据常用操作的内置类型 - 为什么要用

JavaScript的内置对象及其时间对象

0413 对象的类型是object. JavaScript 中的所有事物都是对象:字符串.数值.数组.函数... javaScript中万事万物皆对象 删除对象的属性:delete 例:delete obj.bianmei this 这个对象,在不同使用场景代表不同对象    1.对象方法里的this就是当前对象本身 例:var obj = { name:‘张三’ say:function(){ //this就是“我”的意思 console.log(this.name)} } obj.say()

JavaScript单体内置对象:Math对象

JavaScript提供内置的Math对象,其具有强大便捷的辅助计算功能,本文中就将其属性和方法进行总结,相当于扎实以下基础啦~ 1.Math对象的属性 Math.E(常量e的值):Math.LN10(10的自然对数);Math.LN2(2的自然对数):Math.LOG2E(以2为底e的对数):Math.LOG10E(以10为底e的对数):Math.PI(圆周率的值):Math.SORT1_2(1/2的平方根,也即根号二的倒数):Math.SORT2(2的平方根). 2.min()和max()方

JS基础-语法+流程控制语句+函数+内置对象【数组】

JS语法: Javascript基本数据类型:undefined/null/Boolean/number/string 复杂数据类型:object typeof用来检测变量的数据类型 typeof的使用方法有两种: (1)typeof 变量 (2) typeof(变量) undefined派生自null,所以undefined==null返回的结果是true 用于任何数据类型,Number()可以将非数值转化为数值,但是有一些数据是不能转化为数值的,如果这类数据通过Number()进行强制转化的

pythopn 函数(内置函数)

内置函数(Py3.5) 重要的内置函数: 1. filter(function, sequence) # 描述: filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判, 然后返回 True 或 False,最后将返回 True 的元素放到新列表中. # 语法: 以下是 filter() 方法的语法: filter(function,sequence) # 参数: funct

4/2 三元表达式/函数递归/匿名函数/内置函数

三元表达式 def max2(x,y) if x > y: return x else return y res=max2(10,11) 三元表达式仅应用于: 1 条件成立返回一个值 2 条件不成功返回一个值 def max2(x,y): return x if x>y else y print (max2(2,10)) 10 函数递归:函数的递归调用,即在函数调用的过程中,又直接或间接地调用了函数的本身. 直接调用 def foo(): print ('fffff') foo() 间接调用