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
总结:
- 参数的值传递,不改变变量的初始值
- 参数的对象传递,改变对象的初始值
6 JavaScript函数&内置构造&函数提升&函数对象&箭头函数&函数参数&参数的值传递与对象传递的更多相关文章
- python 匿名函数&内置函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...
- ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数
一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- python学习day11 函数Ⅲ (内置函数与lambda表达式)
函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # ...
- Python学习笔记014——迭代工具函数 内置函数enumerate()
1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...
- Python学习(五)函数 —— 内置函数 lambda filter map reduce
Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.fil ...
- python 函数--内置函数
一.内置函数 内置函数是python自带的一系列常用函数. 二.python3中内置函数 内置功能 abs() delattr() hash() memoryview() set() ...
- JavaScript 标准内置对象Promise使用学习总结
Javascript标准内置对象Promise使用学习总结 by:授客 QQ:1033553122 1. 基础用法 var condition = true; let p = new Prom ...
- 第一百零八节,JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式
JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式 学习要点: 1.Global对象 2.Math对象 ECMA-262对内置对象的定义是:"由ECMASc ...
随机推荐
- 【 SSH 整合】Spring、Struts、Hibernate基本整合
applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xm ...
- mybatis的8月29日
一.select查询语句 1.mybatis的映射,jdbc预处理 <select id="selectPerson" parameterType="int&quo ...
- 初学mysql数据库
package com.conn; import java.sql.Connection; import java.sql.DriverManager; public class Conn { pub ...
- SpringBoot集成SwaggerUI
1.在module下的pom.xml中引用相关插件 引用swagger插件并用参数化版本信息,如下 <?xml version="1.0" encoding="UT ...
- 吴裕雄 python 神经网络——TensorFlow图片预处理调整图片
import numpy as np import tensorflow as tf import matplotlib.pyplot as plt def distort_color(image, ...
- BFS和DFS详解以及java实现(转载)
作者:Leo-Yang 原文都先发布在作者个人博客:http://www.leoyang.net/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连 ...
- 2020年英特尔CPU供应短缺将持续
导读 有着相当靠谱的爆料历史的台媒 DigiTimes 报道称,其预计英特尔的 CPU 供应短缺问题,将持续到 2020 年末.对于这样的预测,我们其实早已见怪不怪,毕竟该公司首席执行官 Bob Sw ...
- python中for循环中的循环变量
废话不多说,代码伺候: for i in range(3): print("hello") print(i) 运行结果如下: 从上面的例子可以看出,for循环里面的循环变量i作用域 ...
- js下false情况
//为false的情况 false null NaN undefined "" 0
- 强化学习-Q-learning学习笔记
Q学习动作探索策略中的ep-greepy,以ep的概率进行随机探索,以1-ep的概率以最大值策略进行开发,因为设定的迭代次数比较多,所以肯定存在一定的次数去搜索不同的动作. 1)Python版本 b站 ...