JavaScript 函数的定义-调用、注意事项


Posted in Javascript onApril 16, 2017

函数定义

函数语句定义

function(a,b){
 return a+b; 
}

表达式定义

var add = function(a,b){return a+b};

//函数表达式可以包含名称,这在递归时很有用 var f = function fact(x){ if(x<=1) {return 1; }else { return x*faxt(x-1); } }

以表达式方式定义的函数,函数的名称是可选的。如果函数定义表达式包含名称,函数的局部作用域将会包含一个绑定到函数对象的名称,实际上,函数的名称将成为函数内部的一个局部变量

函数命名规范

1.like_this()第一个字符为小写,当包含多个单词时候,单词以下划线分割

2.likeThis()第一个字符为小写,当包含多个单词时候,除第一个单词以外的单词首字母使用大学字母

3.内部函数或私有函数,通常以一条下划线为前缀

注:函数声明语句‘被提前到外部脚本或外部函数作用于顶部,所以可以被在它定义之前出现的代码所调用

以表达式方式定义函数前必须把它赋值给一个变量。所以表达式方式定义的函数在定义之前是无法调用的

函数返回值

  • return语句返回函数的值给调用者。
  • return语句没有,则它返回undefined

 嵌套函数

  • 嵌套函数可以访问他们的函数的参数和变量
  • 但是嵌套函数不能出现在循环、条件判断,或者try/cache/finally/with语句中

函数调用

  • 作为函数
  • 作为方法
  • 作为构造函数
  • 通过他们的call()和apply()方法间接调用

作为函数调用

add(1,2)

 根据ECMAScript3和非严格的ECMAScript5对函数调用的规定,调用上下文(this的值)是全局对象。然而在严格模式下,调用上下文则是undefined。

//定义一个函数且调用一个函数来确定当前脚本运行是否为严格模式
 var strict = (function(){return this;}());

作为方法调用

var o = {
 m:1,
 n:2,
 add:function(){
  this.result = this.m+this.n;
  }
}

方法调用和函数调用的一个重大区别。----调用上下文

o.add() add的调用上下文为o,即:this
o.add() 等同于o['add']()
方法链:当方法并不需要返回值时候,最好直接返回this
this为一个关键字,不是变量,也不是属性名。JavaScript语法不允许给this赋值
和变量不同,关键字this没有作用于的限制,嵌套的函数不会从调用它的函数中继承this,如果想访问外部函数的this,var self= this;保存在变量中
如果嵌套函数作为函数调用,其this的值指向调用它的对象。如果作为函数调用,this不是全局对象(非严格模式),就是undefined(严格模式)

构造函数调用

var o = new Object();

构造函数调用和普通函数调用以及方法调用在实参处理。调用上下文和返回值等方面都有不同。

凡是没有形参的构造函数调用都可以省略圆括号。

var o = new Object();
var o = new Object;
//等价

构造函数调用创建一个新的空对象,这个对象继承自构造函数的prototype属性,这个函数试图初始化这个新创建的对象,病将这个对象做为上下文,因此构造函数可以使用this关键字来引用这个新创建的对象。

new o.m() 调用的上下文并不是o.
构造函数并不使用return。如果构造函数显示的使用return语句返回一个对象,那么调用表达式的值就是这个对象。如果构造函数但并没有返回值,或者返回一个原始值,那么就会忽略返回值,同时使用新对象作为返回结果。

间接调用

call()
appy()

Javascript 相关文章推荐
用Div仿showModalDialog模式菜单的效果的代码
Mar 05 Javascript
不要在cookie中使用特殊字符的原因分析
Jul 13 Javascript
jquery实现多级下拉菜单的实例代码
Oct 02 Javascript
jQuery实现鼠标经过图片预览大图效果
Apr 10 Javascript
浅谈Web页面向后台提交数据的方式和选择
Sep 23 Javascript
ReactJs快速入门教程(精华版)
Nov 28 Javascript
基于rem的移动端响应式适配方案(详解)
Jul 07 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
Oct 14 Javascript
JavaScript实现shuffle数组洗牌操作示例
Jan 03 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 Javascript
基于javascript处理二进制图片流过程详解
Jun 08 Javascript
js实现移动端轮播图滑动切换
Dec 21 Javascript
AngularJS双向绑定和依赖反转实例详解
Apr 15 #Javascript
JavaScript简单计算人的年龄示例
Apr 15 #Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
Apr 14 #Javascript
微信小程序动态的加载数据实例代码
Apr 14 #Javascript
JAVA中截取字符串substring用法详解
Apr 14 #Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
Apr 14 #jQuery
JavaScript实现的选择排序算法实例分析
Apr 14 #Javascript
You might like
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
php session 预定义数组
2009/03/16 PHP
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
PHP 输出缓存详解
2009/06/20 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
简单的js分页脚本
2009/05/21 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
js中的闭包实例展示
2018/11/01 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
美国第一香水网站:Perfume.com
2017/01/23 全球购物
关于赌博的检讨书
2014/01/08 职场文书