函数也是对象,是一个引用数据类型。函数可以分为普通函数和构造函数,普通函数用作方法,构造函数用作类,但他们的本质是一样的,为了区分,我们通常将构造函数的函数名大写。

函数定义

  • 函数声明
 function 函数名(形参){ }

函数声明与var声明变量类似,都会有变量的提升,允许在函数声明前调用函数。

let result = add(1,2);      // 可以执行
function add(a, b){return a + b;
}
  • 函数表达式

函数表达式类似于普通的赋值表达式,变量会提升,但是函数初始化不会被提升。

bar();          //报错!bar is not defined
add();          //报错!add is not a function,变量提升
var add = function(a,b){return a + b;
}

函数调用

  • 函数名(实参列表);
function add(a, b){return a + b;
}
add(1,2);   //3
  • 函数名.call(this,实参列表);
add.call(this,1,2);  //3
  • 函数名.apply(this,实参数组);
add.apply(this,[1,2]);   //3

函数内部属性

1、this

  • 当前的执行环境对象。
  • 与函数的调用方式有关。
  • 如果使用"()“调用函数,查看”()“是否是函数名,如果是,查看函数名前有没有点”.",没有点".",this指向全局对象;有".",this指向点前面的那个对象。

2、arguments

  • 类数组对象。
  • 保存实参。
  • arguments.callee指向当前函数,用于递归函数,但是在严格模式下无法使用。

3、形参

注意:只有在函数的执行过程中,函数的内部属性才能被确定。

函数应用

1、函数可以作为参数【回调函数-匿名内部类】

arr.forEach(function(){})

2、函数可以作为返回值【函数定制】

[{id:1,name:"terry",age:12,grade:88},{id:2,name:"larry",age:13,grade:98},{id:3,name:"marry",age:11,grade:82}
].sort((function(key){//返回比较器函数return function(a,b){ if(a[key]>b[key]){return 1;}else{return -1;}}
})('age'));

函数本质

一个函数对应两块内存,一块是函数本身,另一块是函数原型,两者关系你中有我,我中有你,相互指向。目的在于初始化实例对象。

function foo(){ }
foo.prototype.constructor === foo;       //true

箭头函数

箭头函数一般用于回调函数,是回调函数的简写。箭头函数中的this指向包含它的外部函数的this,所有箭头函数一般放在外部函数里面。

function foo(){["terry","larry"].forEach((item)=>{console.log(this,item);//箭头函数this指向foo的this})
}

JavaScript学习笔记(七)--函数相关推荐

  1. javascript学习笔记(七) 函数

    1.函数内部属性 arguments arguments用来保存函数的参数,arguments.callee指向拥有arguments对象的函数 1 //阶乘 2 function factorial ...

  2. 菜鸟教程-Javascript学习笔记-JS函数之前

    教程连接是: https://www.runoob.com/js/js-tutorial.html DOM(一些操作页面元素的方法) BOM(一些操作浏览器的方法) ################# ...

  3. Javascript学习笔记2——函数

    在Javascript中,function才是Javascript的第一型.当我们写下一段函数时,其实不过是建立了一个function类型的实体. 就像我们可以写成这样的形式一样: function ...

  4. 《JavaScript语言精粹》学习笔记(函数(2))

    <JavaScript语言精粹>学习笔记(函数(2)) 函数(Functions) 参数(Arguments) 当参数被调用时,会得到一个"免费"的参数数组argume ...

  5. JavaScript学习笔记(七)——厚积薄发之小成果

    JavaScript学习笔记(七)--厚积薄发之小成果 目前我先列好提纲,利用每晚和周末的闲暇时间,将逐步写完 ^_^ 转载于:https://www.cnblogs.com/wdpp/archive ...

  6. JavaScript学习总结(七)——JavaScript函数(function)

    转载自   JavaScript学习总结(七)--JavaScript函数(function) 一.函数基本概念 为完成某一功能的程序指令(语句)的集合,称为函数. 二.JavaScript函数的分类 ...

  7. JavaScript学习(七十三)—高阶函数

    JavaScript学习(七十三)-高阶函数 高阶函数:高阶函数是对其他函数进行操作的函数,它接收函数作为参数或将函数作为返回值输出 此时的fn就是一个高阶函数,函数也是一种数据类型,同样可以作为参数 ...

  8. JavaScript学习(七十)—函数中this的指向问题

    JavaScript学习(七十)-函数中this的指向问题 一.这些this的指向,是当我们调用函数的时候确定的,调用方式的不同决定了this的指向不同,一般指向我们的调用者

  9. JavaScript学习笔记——函数 Part4:向函数传递函数、从函数返回函数(函数是一等公民)

    要点 函数是值,这个值就是函数引用 函数是一等公民:函数引用是一等值 可将函数引用赋给变量.含在数据结构(如对象)中.传递给其他函数或从其他函数返回 函数是一等公民 不要再认为函数是特殊的,有别于Ja ...

  10. JavaScript学习笔记(四)---闭包、递归、柯里化函数、继承、深浅拷贝、设计模式

    JavaScript学习笔记(四)---闭包.递归.柯里化函数.继承.深浅拷贝.设计模式 1. 匿名函数的使用场景 2.自运行 3.闭包 3.1前提: 3.2闭包 4.函数对象的三种定义方式 5.th ...

最新文章

  1. latex快速入门教程
  2. 会计记忆总结之三:会计等式与复式记账
  3. usestate中的回调函数_React 中获取数据的 3 种方法:哪种最好?
  4. Leet Code OJ 171. Excel Sheet Column Number [Difficulty: Easy]
  5. 开发一个自己的 CSS 框架(五)
  6. 记录一次iOS11大标题不滚动的问题
  7. 医疗设备-监护仪-数据解析(协议、通信)
  8. 如果彩虹QQ算非法外挂,那么运行在windows上的非微软开发的程序算什么?
  9. php可以控制视频的尺寸吗吗,控制视频像素尺寸这样做
  10. 中科院计算机研究方向-考研导师选择的一些建议
  11. 数仓知识05:事实表和维度表的概念
  12. 全栈开发实战(二)——简易博客社区前端搭建教程(附源码)
  13. 推荐一个220V控制12V的电路板继电器-220v降压控制继电器
  14. vue+elementui 登录注册页面实现
  15. 判断图片路径是否404
  16. 国内交互智能平板品类首创者希沃联手倍市得,进一步蓄力品牌发展势能
  17. ELK 日志分析平台 —— Logstash
  18. [动态规划] NKOJ 4250 小区划分
  19. 我不知道自己会什么了
  20. PVE 下使用i2ctools显示DIMM温度 内存温度(未成功)

热门文章

  1. Windows 安装 Redis
  2. linux提取声卡的codec教程,发个菜鸟提取声卡codec文件图文教程,老手就别看了,小心被骂!...
  3. 好用的python学习软件_5种好用的Python工具!Python学习分析
  4. python连接数据库oracle_python连接oracle数据库
  5. 千兆网线8根线定义图_网线水晶头如何制作及怎么测试?
  6. Java基础---数据类型转换和运算符
  7. 通过jquer连接数据库里面的数据、LINQ简介
  8. 贝壳:计算绝对值(暴力破解)
  9. Objective-C 日记④ 集合家族
  10. WPF学习笔记一 依赖属性及其数据绑定