js的函数-function
function函数
function的英文是[功能],[数] 函数;职责;盛大的集会的意思
在js里,就是函数的意思。在Java里叫做方法。
定义函数
function fun(参数){
//函数体
//return可有可无,根据实际要求加或不加
}
使用函数
//函数名()
fun();
ps:在js里,我们的方法可以先调用后声明,也就是调用寒素的代码可以写在定义函数的前面。
实参、形参
实参:简单理解就是实际的参数,在调用函数的时候传的
形参:简单理解就是在定义函数时,用来接收调用时传的值
var n1=123 , n2=456
//调用函数
fun(n1 , n2)
//定义函数
function fun( a , b){
a += 100
b += 100
console.log(a , b)
}
console.log(n1 , n2)
//运行结果:223 , 556
//123 , 456
ps:我们可以看出,实参和形参并不是同一个变量
不太严谨的参数列表
先看一段代码:
function fun(a , b , c){
console.log(a*10 , b+10 , c-10)
}
//调用
fun(1,2,3)//输出结果10,12,-7
//这里是没毛病的,正常输出
//但是下面这个调用呢???
fun(20,2)
fun()
fun(12,32,14,5)
ps:上面的写法,都不会报错...如果不信可以自己试试。
- 我们在定义函数的时候,定义了多少个参数,按道理来说,就应该严格按照规范传参,但是没办法,js里比较‘宽容’,你传了多少个参数,就接收多少个参数
- 如果多传了就无视你多传的参数,从第一个','前的参数为第一个参数算
- 如果少传了,没有传的那几个参数,就为undefined。都没传那就值都为undefined
return关键字
首先,在js里,并没有规定函数在定义的时候,一定要有返回值或者返回值类型这一说法,很活跃的,你想返回什么结果都可以
其次,如果要返回结果或者结束函数体,就要用到return关键字
- return用于返回函数的值给调用者
- return一旦执行,则立马结束当前的函数,注意:必须时返回具体的值才会结束(可以思考一下递归调用)
- return函数中可以有多个,返回不同条件下的值。比如在switch中,每个case后面可以用return返回具体的值
arguments
在es5里,arguments是一个对象,用来接收所有的参数,用法和数组一致;不过目前已被废弃,有更好的代替它
es6:(推荐使用)
function fun( n1, n2, ...args ){
//args只能接收n2后面的数
//用...接收的就是一个数组,可以遍历
}
ps:...后面不一定要写args,可以自己随便命名,符合字符串规范就行。一般用args表示
关于...args的用法
- args不能放在参数列表的前面
- args有且只有一个
关于函数的耦合问题
先看代码:
var num = 100
var res = fun(1)
//定义函数
function fun(n){
console.log( num + n )
}
//输出为101
ps:上面的代码运行结果没问题,但是,耦合度很高,因为在函数体内,用全局变量运算,这就很忌讳,如果项目要移植,这些用到的变量就会拖泥带水的,耦合度高。这在以后的工作中这么干容易被炒鱿鱼...
注意:如果要使用,传参数就好了,千万别使用全局变量
函数名的问题
var f = function fun(){
console.log("my name is rainbow")
}
console.log(f)
ps:我们把一个函数体,赋值给了一个变量,那么这个变量打印出来会怎么样呢?
结果:并不会报错,而是直接打印出了整个函数体的内容。我们可以这么想,调用函数的时候,我们写的是fun(),也就是 函数名() 就变成了调用了。其实,js里面还真是这么干的,函数名加括号就是调用了一次函数。
在这里,大家和我想一个问题,这个方法体赋值给了变量,那这个变量是什么类型呢???
匿名函数
简单理解就是,你要使用一个函数,但是这个函数没有名字,这要怎么使用呢。
很简单,上面不是说了吗?
- 调用函数就是 函数名()
- 而又因为 函数名 = 方法体
- 那么 方法体() = 函数名()
这样就调用了一次函数
var a = 10;
var b = 20;****************
var f = function(){
console.log(n1+n2)
};
f(a,b)//输出结果30
自执行函数
- 自执行函数就是自己定义自己执行
这个就是匿名函数的应用
(function(){
console.log('this is rainbow !')
})();
例子
var a = 10;
var b = 20;
(function( n1 , n2 ) {
console.log( n2 + n1)
})(a ,b);
//输出结果为30
ps:
- 自执行函数的函数体必须要用()包起来。建议最后加上分号';'
- 自执行应用场景一般在一些类库上
js的函数-function的更多相关文章
- 自定义JS Map 函数
// 自定义JS Map 函数 function Map() { var map = function (key, value) {//键值对 this.key = key; this.value = ...
- Js函数function基础理解
正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...
- JS系列:函数function
### 函数 function > 在js中函数就是一个方法(一个功能体)基于这个函数,一般是为了实现某个功能. ``` var total =10; total+=10; total=tota ...
- js中使用function定义类、实例化,函数的调用方法
function Test002(name, age){ name, age, this.printInfo = function(){ //定义的公有方法 console.log(name, age ...
- js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( ))
( function(){…} )() ( function (){…} () ) 是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达 ...
- 在webView 中使用JS 调用 Android / IOS的函数 Function
最近做一个项目,混合了NativeCode 和 HTML,为了便于JS 调用App的一些方法,统一封装一个Js方法,记录如下 Android 端首先要再WebView中允许JS的调用 WebView ...
- 深入理解js中的立即执行函数(function(){…})()
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( f ...
- js中自执行函数(function(){})()和(function(){}())区别
方式一,调用函数,得到返回值.强制函数直接量执行再返回一个引用,引用在去调用执行方式二,调用函数,得到返回值.强制运算符使函数调用执行(function(){})(); 是 把函数当作表达式解析,然后 ...
- php与js中函数参数的默认值设置
php函数参数默认值设置: <?phpfunction test($val=3){ echo $val."<br/>";}test(11);test();?& ...
随机推荐
- 落谷P3041 [USACO12JAN]Video Game G
题目链接 多模式匹配问题,先建 AC 自动机. 套路性的搞个 DP: \(f[i][j]\) 表示前 \(i\) 个字符,当前在 \(AC\) 自动机上的节点是 \(j\) 能匹配到的最多分. 初始化 ...
- 查看java程序中对象占用空间大小
需要引入的jar包: <dependency> <groupId>com.carrotsearch</groupId> <artifactId>java ...
- 3款pdf插件介绍
1.pdf.js:推荐使用.小窗口可以使用iframe来解决.ie8及以下不支持,但是360的兼容模式ie8下可以在新标签页中打开,在iframe中打不开,ie8中在新标签页也不支持打开.可使用ua- ...
- 微信小程序云开发如何上手
简要介绍 微信小程序云开发,是基于 Serverless 的一站式后端云服务,涵盖函数.数据库.存储.CDN等服务,免后端运维.基于云开发可以免鉴权调用微信所有开放能力. 前提准备 微信开发者工具 创 ...
- Mac下安装appium+python+Android sdk 环境完整流程
安装大纲:1,安装jdk (jdk1.8及以上版本都可以,尽量不要用最新可能会不兼容) 2,安装android-sdk (mac版本的android-sdk) 3,mumu模拟器 (随便找的一个) 4 ...
- ssh 免密码登陆设置不成功
记一次centos6设置免密码登陆设置不成功的解决.自己挖的坑自己填. ssh 免密码登陆设置( 正常情况下是这样的,设置成功后登陆主机是不需要密码的) [root@master .ssh]# ssh ...
- mysql: SOURCE error 2?
mysql: SOURCE error 2? mysql -uroot -p ****** # 路径输入错误,会抛出这个异常 mysql> source /var/lib/ambari-serv ...
- Mybatis(一)--简介
一.JDBC问题分析: 从之前我们所写到过的jdbc代码或工具类可知: 1).数据库连接创建,释放频繁将造成系统资源浪费从而影响系统性能: 2).SQL语句在代码中硬编码,造成代码不易维护,SQL变动 ...
- WPF应用程序管理
WPF应用程序管理(更多资源:http://cleopard.download.csdn.net/) 一.WPF应用程序由System.Windows.Application类进行管理 二.创建WPF ...
- 【进程/作业】篇章一:Linux进程及其管理(进程的管理基础)
概述:监控系统各方面的性能,保障各类服务的有序运行,是运维工作的重要组成部分,本篇就介绍一次常用的系统监控命令和相关的参数说明 具体包含以下几部分: 1.进程的管理基础 ,主要是讲一下概念性的东西 2 ...