JavaScript笔记:函数
函数是定义一次但却可以调用或执行任意多次的代码块。
一、函数定义
javascript中的函数使用function关键字来定义,常用的函数定义分为三种形式:
- 声明式函数定义
function sum(a,b)
{
return a+b;
}
alert(sum(,));
- 函数表达式
var sum = function(a,b)
{
return a+b;
};
alert(sum(10,20));
函数声明与函数表达式的区别:
1、以函数声明的方法定义的函数,函数可以在函数声明之前调用,而函数表达式的函数只能在声明之后调用.
2、以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的.
二、函数的返回值
1、若函数没有指明返回值,默认返回的是'undefined'。
2、当函数有返回值时,返回值是什么就返回什么。如下:
function box(name, age) { //有参数的函数
return '你的姓名:'+name+',年龄:'+age;//通过return 把函数的最终值返回
}
alert(box('小徐', 25)); //调用函数得到返回值,然后外面输出
返回结果:

3、return语句还有一个功能就是退出当前函数,注意和break的区别。PS:break用在循环和switch分支语句里。在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页.
三、函数调用
函数体代码在函数被调用时才会执行。Javascript函数常用的有3种调用方式:
- 普通的函数调用
- 方法调用
- 构造函数调用
(1)函数调用形式
function func() {
alert("Hello World");
}
func();
// 使用函数的Lambda表达式定义函数,然后调用
var func = function() {
alert("你好,小徐");
};
func();
在函数调用模式中,函数里的 this 关键字指全局对象,如果在浏览器中就是 window 对象.
(2)方法调用模式
将函数赋值给对象的成员后,那么这个就不在称为函数,而应该叫做方法
// 定义一个函数
var func = function() {
alert("我是一个函数么?");
};
// 将其赋值给一个对象
var o = {};
o.fn = func; // 注意这里不要加圆括号
// 调用
o.fn();
在方法中this专指当前对象. 即o.fn 中的this 指的就是对象o.
(3)构造器调用模式
// 定义一个构造函数
var Person = function() {
this.name = "上海";
this.sayHello = function() {
alert("你好,这里是" + this.name);
};
};
// 调用构造器,创建对象
var p = new Person();
// 使用对象
p.sayHello();
this指的是对象本身.
除了上面简单的使用以外,函数作为构造器还有几个变化. 分别为:
1、 所有需要由对象使用的属性,必须使用this引导;
2、 函数的 return 语句意义被改写,如果返回非对象,就返回this;
四.arguments对象
ECMAScript函数不介意传递进来多少参数,也不会因为参数不统一而错误。实际上,函数体内可以通过arguments对象来接收传递进来的参数。arguments对象的length属性可以得到参数的数量。
我们可以利用length这个属性,来智能的判断有多少参数,然后把参数进行合理的应用。比如,要实现一个加法运算,将所有传进来的数字累加,而数字的个数又不确定。
function box() {
var sum = 0;
if (arguments.length == 0) return sum; //如果没有参数,退出
for(var i = 0;i < arguments.length; i++) { //如果有,就累加
sum = sum + arguments[i];
}
return sum; //返回累加结果
}
alert(box(5,9,12));
JavaScript笔记:函数的更多相关文章
- JavaScript笔记- 函数声明和函数表达式(001)
function 是 Javascript 中的第一类对象,这就意味着函数可以像其他值一样被传递.一个最常见的用法就是将一个匿名函数作为回调函数传递到另外一个异步函数中. 函数声明 ? 1 funct ...
- [Effective JavaScript 笔记]第3章:使用函数--个人总结
前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...
- [Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法
js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+ ...
- javascript oop深入学习笔记(二)--javascript的函数
一.概述: 函数是进行模块化程序设计的基础, javascript重的的函数不同于其他语言,每个函数都作为一个对象被维护和运行.通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或则讲函数作为参 ...
- JavaScript笔记基础篇(二)
基础篇主要是总结一些工作中遇到的技术问题是如何解决的,应为本人属于刚入行阶段技术并非大神如果笔记中有哪些错误,或者自己的一些想法希望大家多多交流互相学习. 1.ToFixed()函数 今天在做Birt ...
- [Effective JavaScript 笔记] 第5条:避免对混合类型使用==运算符
“1.0e0”=={valueOf:function(){return true;}} 是值是多少? 这两个完全不同的值使用==运算符是相等的.为什么呢?请看<[Effective JavaSc ...
- [Effective JavaScript 笔记]第27条:使用闭包而不是字符串来封装代码
函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行.这使得富有表现力的高阶函数抽象如map和forEach成为可能.它也是js异步I/O方法的核心.与此同时,也可以将代码表示为字符串的形式 ...
- 【原】javascript笔记之Array方法forEach&map&filter&some&every&reduce&reduceRight
做前端有多年了,看过不少技术文章,学了新的技术,但更新迭代快的大前端,庞大的知识库,很多学过就忘记了,特别在项目紧急的条件下,哪怕心中隐隐约约有学过一个方法,但会下意识的使用旧的方法去解决,多年前ES ...
- JavaScript笔记(4)
接上一篇笔记 -----> 打印: 打印: 打印: 一.break 和 continue 的区别 1.break 1.break语句可用于跳出循 ...
随机推荐
- 关于vue.js中事件处理器的练习
html: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8 ...
- 前端基础 JavaScript~~~ 数据处理 奇技淫巧!!!!!!
常用的JS数据处理手段 2016-09-21 17:40:07 1. number类型 数组中取出里面的最大/最小值: // 数组中取出 最小值 [数值] var n ...
- ASP.NET(转自wiki)
ASP.NET是由微软在.NET Framework框架中所提供,开发Web应用程序的类库,封装在System.Web.dll文件中,显露出System.Web名字空间,并提供ASP.NET网页处理. ...
- oracle创建删除用户和表空间
创建用户:sqlplus /nologconn / as sysdba;create user username identified by passwordgreant dba to usernam ...
- k8s dns 服务安装配置说明
1. 提前条件 安装k8s 集群 2. dns 安装配置 安装方式: 使用controller service controller 脚本: 基于官方改动 apiVersion: v1 kin ...
- Verilog HDL那些事_建模篇笔记(实验八:键盘解码)
1.PS2接口与协议时序图 对于PS2的接口来说,需要额外关注的是PIN5与PIN1,一个是时钟,一个是数据.PS2协议对数据的移位是“CLOCK下降沿”有效,其CLOCK的频率通常在10KHz左右. ...
- PHP 获取指定目录下所有文件(包含子目录)
PHP 获取指定目录下所有文件(包含子目录) //glob — 寻找与模式匹配的文件路径 $filter_dir = array('CVS', 'templates_c', 'log', 'img', ...
- 生成均值文件mean.binaryproto
[感谢:http://www.cnblogs.com/denny402/p/5102328.html] compute_image_mean.bin生成均值文件mean.binaryproto: ca ...
- FastJson的使用
FastJson FastJson:阿里巴巴的一个Json处理工具包,包括序列化和反序列化两部分. <dependency> <groupId>com.alibaba</ ...
- mysql-5.7.16 解压版安装
下载压缩包后,解压到任盘 配置环境变量: 将“C:\MySQL;”加入到环境变量Path中 重命名my-default.ini为my.ini 修改my.ini内容: basedir =C:\MySQL ...