JavaScript的Function 类型
一,Function定义
Function实际上是对象,与其他引用类型一样具有属性和方法。Function可以通过三种方法进行定义,分别是函数声明语法定义,函数表达式定义和Function构造函数定义。
1.函数声明语法定义
function functionName(value1...){//函数体 }
2.函数表达式定义
var functionName = function(value1...){//函数体 }
3.Function构造函数定义
通过Function构造函数创建函数,可向构造函数中传入任意数量的参数,但值得注意的是传入的最后一个参数会作为函数体,而其他参数则作为参数传入函数中。用该方法去定义函数是不推荐使用的,因为该语法会导致解析两次代码,第一次解析常规ECMAScript代码,第二次解析传入构造函数的字符串,影响性能。
var functionName = new Function("value",...,"函数体");
注:函数是引入值类型,所以函数名仅仅是指向函数的指针,当使用函数名去赋值给另一个变量名时,仅仅复制的是一个指针。即在下列a设置为null时,仅将a存的指针消除而已,不会影响b调用函数。
var a = b = function(value1){return value1; } a = null; b(1);
二、函数的重载
函数本身是没有重载的,因为在JavaScript中,函数可接收任意个参数,故不会因参数数量不同而发生函数重载。但可以通过特殊的写法实现函数重载。
思路:利用函数内部属性arguments.length去判断,进行传入不同参数的不同处理,从而实现函数的重载。
三、函数声明与函数表达式的区别
解析器对这两种定义函数方法的解析是不一样的。解析器会将函数声明的函数优先解析,使其在代码执行前可用(函数声明提前)。而函数表达式会在执行到该行代码才会被解析。
四、闭包
面试题:将数组中的对象,按某个属性进行排序。
思路:利用数组的sort()接收一个对比函数,该对比函数是另一个函数的返回值。
var arr = [{name:"lyf",age:20},{name:"gulu",age:18}]; function nameSort(name){return function(obj1,obj2){return obj1[name]-obj2[name];} } arr.sort(nameSort("age"));
五、函数内部属性
1.arguments:包含函数所有参数的伪数组。
其arguments.callee属性指向含有该arguments对象的函数。该属性可用于递归函数的函数调用。
例:一个阶乘函数的写法。
function factorial(num){if(num<=1){return 1;}else{return num*arguments.callee(num-1);} }//好处:低耦合
2.this:函数执行的环境变量。
3.caller:调用当前函数的函数引用。
例:
function a(){console.log(a.caller);//指向调用a的b } function b(){a(); } b();
六、函数的属性和方法
1.length:该属性指定义函数时,需要传入参数的个数。使用为:函数名.length;
2.prototype:原型函数。
3.apply和call:方法均改变调用函数的环境对象,简而言之就是改变函数的this值。两者除了传入参数的方式不同外,没有什么区别。apply在传参时,可传入数组或伪数组arguments,call是将参数依次列出传入函数的,具体看以下语法。
apply(环境对象,[value1,...])或apply(环境对象,arguments)。
call(环境对象,value1,value2...)
4.bind()
创建一个函数实例,其this值会被绑定到传给bind()函数的值。
window.age = 20; var lizi = {age:18}; function sayAge(){alert(this.age); } var say = sayAge.bind(lizi); say();//18
转载于:https://www.cnblogs.com/whiteMu/p/7399719.html
JavaScript的Function 类型相关推荐
- JavaScript之function类型
每个函数都是function类型的实例 function name() var name= function() 转载于:https://www.cnblogs.com/anderson0/p/482 ...
- JavaScript面向对象之Function类型
JavaScript面向对象之Function类型 下面是我对Function类型的总结,希望对您有帮助. "函数式编程"是一种"编程范式"(programmi ...
- 《JavaScript高级程序设计 (第3版)》学习笔记14:chapter_5 - 5 Function类型
这是第14篇笔记! 让学习"上瘾",成为更好的自己! <!DOCTYPE html> <html lang="en"> <head ...
- 理解JavaScript的原始类型
2019独角兽企业重金招聘Python工程师标准>>> JavaScript中的原始类型(primitive type)包括Undefined.Null.Number.Boolean ...
- java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别
[Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...
- JavaScript学习总结(七)——JavaScript函数(function)
转载自 JavaScript学习总结(七)--JavaScript函数(function) 一.函数基本概念 为完成某一功能的程序指令(语句)的集合,称为函数. 二.JavaScript函数的分类 ...
- javascript检测浏览器类型和版本号(兼容各浏览器)
代码 1 from: http://www.webreference.com/tools/browser/javascript.html 2 http://browserspy.dk/browse ...
- 利用Javascript判断操作系统的类型
在通过Javascript实现客户端和服务端的交互时,有时候需要对操作系统进行判断,以便实现不同操作系统下的兼容性,比如:我们有一个网站, 在Windows XP下浏览效果良好,但是到了Ubuntu下 ...
- 如何用mshtml获得Javascript中function的返回值[mshtml]
marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/ ...
最新文章
- 计算机网络协议分层体系结构
- 关于Spring 国际化 No message found under code 的解决方案
- 四川省天然气行业发展战略及投资形势分析报告2021版
- echo中使用逗号和句号的区别
- eureka自我保护功能
- 【会议】2009-11-13
- Codeforces 558(C、D、E)总结
- 三个月可更改用户昵称两次
- 企业中个别机械类制图软件无法打印的问题汇总
- 主板插槽接口相关释义
- 【读书笔记】《软件方法(上)业务建模和需求》(第2版)习题答案
- java倒序输出英文句子_Java实现英文句子中的单词顺序逆序输出的方法
- 光功率计(Optical power meter)
- unity物体自身轴旋转_Unity 中物体的旋转
- RabbitMQ核心功能介绍
- 华为服务器磁盘没显示不出来,服务器磁盘读取不了
- TIOBE 1 月编程语言:Python 摘得 2020 年度编程语言
- 量子计算机 大数分解,关于大数分解问题的研究
- Filenet P8阶段性总结
- 菜谱点菜c语言编程,菜单点菜并计算价格 C++改成C 运行成功100分
热门文章
- 教职工使用计算机管理制度,教师配置笔记本电脑管理办法
- 最长回文子串manacher算法模板
- python图书馆预约系统_python实现图书馆研习室自动预约功能
- usb转rj45_超薄本也能有线上网,只需一个USB转网口小工具
- windows通信端口初始化失败_STM32实例——USART串口通信实验(二)
- UnityShader19.1:渲染纹理(下)之GrabPass
- 2017 ACM-ICPC南宁网络赛: I. GSM Base Station Identification(线性变换)
- k8s集群中 spark访问hbase中数据
- jQuery Mobile中弹窗popup的data-*选项
- 尝试:以下矩阵size length ndims repmat isempty ismatix E=A(:,[1:3:5])什么意思?