什么是函数

函数的作用,可以写一次代码,然后反复地重用这个代码。

<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】的更多相关文章

  1. js函数篇

    1.闭包函数,作用:不污染全局变量,  定义:与外界隔离的独立作用域被称为闭包,使用函数实现该功能称为函数闭包: 写法: (function(){ function sayHello(){ conso ...

  2. Node.js进阶篇-koa、钩子函数、websocket、嵌入式开发

    代码地址如下:http://www.demodashi.com/demo/12932.html 一.简介     koa是由Express原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的We ...

  3. 如何编写高质量的 JS 函数(1) -- 敲山震虎篇

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/7lCK9cHmunvYlbm7Xi7JxQ作者:杨昆 一千个读者,有一千个哈姆雷特. 此系列文 ...

  4. 如何编写高质量的 JS 函数(2) -- 命名/注释/鲁棒篇

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/sd2oX0Z_cMY8_GvFg8pO4Q作者:杨昆 上篇<如何编写高质量的 JS 函数 ...

  5. 如何编写高质量的 JS 函数(3) --函数式编程[理论篇]

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/EWSqZuujHIRyx8Eb2SSidQ作者:杨昆 [编写高质量函数系列]中, <如何 ...

  6. 如何编写高质量的 JS 函数(4) --函数式编程[实战篇]

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/ZoXYbjuezOWgNyJKmSQmTw作者:杨昆 [编写高质量函数系列],往期精彩内容: ...

  7. JS创建对象篇

    JS创建对象篇 Object构造函数创建 var person = new Object(); person.name = "Tom"; person.age = 10; pers ...

  8. js函数表达式和函数声明的区别

    我们已经知道,在任意代码片段外部添加包装函数,可以将内部的变量和函数定义"隐 藏"起来,外部作用域无法访问包装函数内部的任何内容. 例如: var a = 2; function ...

  9. 2. web前端开发分享-css,js进阶篇

    一,css进阶篇: 等css哪些事儿看了两三遍之后,需要对看过的知识综合应用,这时候需要大量的实践经验, 简单的想法:把qq首页全屏另存为jpg然后通过ps工具切图结合css转换成html,有无从下手 ...

随机推荐

  1. JAVA协程 纤程 与Quasar 框架

    ava使用的是系统级线程,也就是说,每次调用new Thread(....).run(),都会在系统层面建立一个新的线程,然鹅新建线程的开销是很大的(每个线程默认情况下会占用1MB的内存空间,当然你愿 ...

  2. 16点睛Spring4.1-TaskScheduler

    转发:https://www.iteye.com/blog/wiselyman-2213049 16.1 TaskScheduler 提供对计划任务提供支持; 使用@EnableScheduling开 ...

  3. web端自动化——Selenium3+python自动化(3.7版本)-火狐62版本环境搭建

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...

  4. 服务发现--初识Consul

    前言 服务注册.服务发现作为构建微服务架构得基础设施环节,重要性不言而喻.在当下,比较热门用于做服务注册和发现的开源项目包括zookeeper.etcd.euerka和consul.今天在这里对近期学 ...

  5. cordon、drain、delete node区别

    cordon.drain.delete node区别 主要目的:导致node处于不可调度状态,新创建的pod容器不会调度在node上. cordon将node置为SchedulingDisabled不 ...

  6. Java program to find the largest element in array

    Java program to find the largest element in array Given an array of numbers, write a java program to ...

  7. models模型层

    ORM简介 查询数据层次图解:如果操作mysql,ORM是在pymysq之上又进行了一层封装 MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需 ...

  8. C++ 生成随机数总结 & C++ rand 函数使用方法

    1. 产生[0,b]之间的随机数 rand()*b / RAND_MAX; 2. 产生[-a,0]之间的随机数 rand()*(-a) / RAND_MAX; 3. 产生[a,b]之间的随机数 a + ...

  9. hdu 6609 区间条件前缀和 + 二分

    题目传送门//res tp hdu 目的 在尾部逐步插入n个元素,求插入第i个元素时,[1,i)内删去多少个元素,可使前缀和[1,i]不大于m 多测Q [1,15] n [1,2e5] m [1,1e ...

  10. memset 导致的一个段错误

    原型: void *memset(void *s, int c, size_t n); 解释: memset :是 逐字节 拷贝,即n是指整个变量所占字节,在用于数组时一定要注意n不一定是 数组元素. ...