JS函数篇【2】
什么是函数
函数的作用,可以写一次代码,然后反复地重用这个代码。
<h3 onload="add2(1,2,3);add3(4,5,6)"></h3>
<hr/>
<button style="width: 100px;height: 50px;" value="" onclick="add(10,20)">什么是函数</button>
<button style="width: 100px;height: 50px;" value="" onclick="sub()">定义函数</button>
<button style="width: 100px;height: 50px;" value="" onclick="FUNC()">函数叠加功能调用</button>
<hr/>
<h3>有参函数调用:</h3>
<button style="width: 100px;height: 50px;" value="" onclick="add4(10,20)">返回值函数</button>
<script type="text/javascript" src="../JS/jq/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
function add(a1,a2) {
var sum=a1+a2;
alert(sum);
}
//调用函数
//add(10,20);
var sum=1;
function sub(argument) {//调用函数
sum+=1;
alert(sum);
}
function FUNC(){//函数调用
for (var i =0; i < 10; i++) {
sub();
}
}
//函数传参
function add2(x,y,z){
var sum = x + y +z;
document.write(x+"、"+y+"、"+z+"和:"+sum+"<hr/>");
}
function add3(x,y,z){
var sum = x + y +z;
document.write(x+"、"+y+"、"+z+"和:"+sum+"<hr/>");
}
//返回值函数
function add4(x,y){
var result=x+y
return result;
}
var value=add4(20,10);
document.write("返回值:"+value);
</script>
1、JS函数定义
含义:JS使用关键字function定义函数,函数可以同过声明定义,也可以是一个表达式。
一:函数声明
function save(){//函数体}
二:函数表达式
var x = function (a, b) {return a * b};
三:functiion构造函数
var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);
注意:在 JavaScript 中,很多时候,你需要避免使用 new 关键字
四:函数提升:
提升:是JS默认将当前作用域提升到前面去的行为。提升应用在变量的声明与函数的声明,因此,函数可以在申明之前调用。
myFunction(5);
function myFunction(y) {
return y * y;
}
注意:使用表达式定义函数时无法提升
五:自调用函数:函数实际上是一个 匿名自我调用的函数 (没有函数名)。
(function () {
var x = "Hello!!"; // 我将调用自己
})();
六:函数可作为一个值使用也可以作为表达式使用
function myFunction(a, b) {
return a * b;
}
var x = myFunction(4, 3);
七:函数是对象
实列:
function myFunction(a, b) {
return arguments.length;
}
toString()将函数作为一个字符串返回
2、JS函数参数
一:JavaScript 函数参数:
1、显式参数:函数显式参数在函数定义时列出。
functionName(parameter1, parameter2, parameter3) {
code to be executed
}
2、隐藏参数:函数隐藏参数(arguments)在函数调用时传递给函数真正的值。
3、默认参数:如果函数在调用时缺少参数,参数会默认设置为: undefined
function myFunction(x, y) {
if (y === undefined) {
y = 0;
}
}
4、Arguments 对象:JavaScript 函数有个内置的对象 arguments 对象.
argument 对象包含了函数调用的参数数组。
实例
找出最大的值
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;
}
统计所有数值的和:
x = sumAll(1, 123, 500, 115, 44, 88);
function sumAll() {
var i, sum = 0;
for (i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
5、通过值传递参数:在函数中调用的参数是函数的参数。如果函数修改参数的值,将不会修改参数的初始值(在函数外定义)。
实例
var x = 1;
// 通过值传递参数
function myFunction(x) {
x++; //修改参数x的值,将不会修改在函数外定义的变量 x
console.log(x);
}
myFunction(x); // 2
console.log(x); // 1
6、通过对象传递参数:在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
3、JS函数调用
JS函数篇【2】的更多相关文章
- js函数篇
1.闭包函数,作用:不污染全局变量, 定义:与外界隔离的独立作用域被称为闭包,使用函数实现该功能称为函数闭包: 写法: (function(){ function sayHello(){ conso ...
- Node.js进阶篇-koa、钩子函数、websocket、嵌入式开发
代码地址如下:http://www.demodashi.com/demo/12932.html 一.简介 koa是由Express原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的We ...
- 如何编写高质量的 JS 函数(1) -- 敲山震虎篇
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/7lCK9cHmunvYlbm7Xi7JxQ作者:杨昆 一千个读者,有一千个哈姆雷特. 此系列文 ...
- 如何编写高质量的 JS 函数(2) -- 命名/注释/鲁棒篇
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/sd2oX0Z_cMY8_GvFg8pO4Q作者:杨昆 上篇<如何编写高质量的 JS 函数 ...
- 如何编写高质量的 JS 函数(3) --函数式编程[理论篇]
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/EWSqZuujHIRyx8Eb2SSidQ作者:杨昆 [编写高质量函数系列]中, <如何 ...
- 如何编写高质量的 JS 函数(4) --函数式编程[实战篇]
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/ZoXYbjuezOWgNyJKmSQmTw作者:杨昆 [编写高质量函数系列],往期精彩内容: ...
- JS创建对象篇
JS创建对象篇 Object构造函数创建 var person = new Object(); person.name = "Tom"; person.age = 10; pers ...
- js函数表达式和函数声明的区别
我们已经知道,在任意代码片段外部添加包装函数,可以将内部的变量和函数定义"隐 藏"起来,外部作用域无法访问包装函数内部的任何内容. 例如: var a = 2; function ...
- 2. web前端开发分享-css,js进阶篇
一,css进阶篇: 等css哪些事儿看了两三遍之后,需要对看过的知识综合应用,这时候需要大量的实践经验, 简单的想法:把qq首页全屏另存为jpg然后通过ps工具切图结合css转换成html,有无从下手 ...
随机推荐
- 【转】行内元素和inline-block产生的水平空隙bug
重构工程师们在设计代码时,有喜欢手动删除行内元素之间产生的额外空隙,并通过设置margin或padding来获取想要间距吗?如代码: <div class=“”><span clas ...
- web端自动化——Selenium Grid原理
利用Selenium Grid可以在不同的主机上建立主节点(hub)和分支节点(node),可以使主节点上的测试用例在不同的分支节点上运行. 对不同的节点来说,可以搭建不同的测试环境(操作系统.浏 ...
- 虚拟机VMWare的操作
软件测试工程师需要搭建测试环境——虚拟机操作. VMWare Workstation虚拟机:模拟真实的环境进行各种试验和操作,启动之后,会占用一部分的系统资源. 官网安装:http://www.vmw ...
- springboot maven 收发JSON
先在pom.xml添加 json 库 <dependency> <groupId>com.alibaba</groupId> <artifactId>f ...
- string中的erase()函数
erase()是对string类型的字符串进行删除元素操作的函数 1.erase(int index) 删除下标从index开始直到字符串结尾的元素 1 string s = "123215 ...
- 记一次EFCore类型转换错误及解决方案
一 背景 今天在使用EntityFrameworkCore 查询的时候在调试的时候总是提示如下错误:Unable to cast object of type 'System.Data.SqlTyp ...
- [itext]Java生成PDF文件
一.前言 最近在做也导出试卷的功能,刚开始是导出为doc,可是导出来格式都有变化,最后说直接将word转为pdf,可是各种不稳定,各种报错.最后想到直接将文件写入pdf(参考:http://www.c ...
- Python 发送微信小程序的模板消息
在小程序的开发过程中,会存在模板消息的发送,具体文档见 这里,模板消息的发送是和语言无关的,这里将简要写一下怎么用 Python 给用户发送模板消息. 通过文档可以知道,发送的时候,需要使用小 ...
- hdu 6562 Lovers (线段树)
大意: 有$n$个数字串, 初始为空, 两种操作(1)把$[l,r]$范围的所有数字串首位添加数位$d$ (2)询问$[l,r]$区间和 假设添加的数为$L$, $L$位数为$H$, $L$翻转后乘上 ...
- IO是否会一直占用CPU?(转)
原文来自知乎:https://www.zhihu.com/question/27734728 这是一个很好的关于并发/并行系统的问题.简单回答就是:IO所需要的CPU资源非常少.大部分工作是分派给DM ...