Javascript 函数详解

1)函数声明:
通过关键字function定义,把函数作为变量来声明
函数声明后不会立即执行,会在我们需要的时候调用到。

<script>function myFunction(a, b) {return a * b;}// js对大小写敏感,function必须小写,调用时大小写也必须一致。// 函数声明不是一个可执行语句,所以不 以分号结尾。
</script>

2)函数表达式:函数表达式可以存储在变量中

var x = function (a, b) {return a * b};
var y = x(1, 2);

3)Function() 构造函数:通过内置函数构造器Function()来定义。

let a = new Function('a', 'b', 'return a + b');
let b = a(1, 2);
document.write(a); //function anonymous(a,b ) { return a + b }
document.write(b); // 3
// 构造函数:
function myFunction(arg1, arg2) {this.firstName = arg1;this.lastName  = arg2;
}
var x = new myFunction("John","Doe");
x.firstName;   //  "John"

4) 自调用函数:表达式后面紧跟 () ,则会自动调用

5)箭头函数: IE11 及更早 IE 版本不支持箭头函数
箭头函数表达式的语法比普通函数表达式更简洁

(参数1, 参数2, …, 参数N) => { 函数声明 }(参数1, 参数2, …, 参数N) => 表达式(单一)
// 相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }// ES5
var x = function(x, y) {return x * y;
}
// ES6
const x = (x, y) => x * y;
(function () {var x = "Hello!!";      // 我将调用自己
})();

6) 函数是对象:
a) arguments: 隐式参数
arguments对象是所有(非箭头)函数中都可用的局部变量。
可以使用arguments对象在函数中引用函数的参数。
arguments对象不是一个 Array 。它类似于Array,但除了length属性和索引元素之外没有任何Array属性

7)函数的参数:(显式参数),调用函数时,传递的值就叫参数,供在函数中使用。
多个参数由逗号(,)分隔;

<script>function way(a, b) {alert(a + b);}way(2, 3);
</script>

c) 带返回值的函数:使用return语句返回值;执行return时函数会停止执行,并返回指定的值。

<script>function way(a, b) {return a + b;}let c = way(2, 3); // 5;
</script>
<script>function way(a, b) {return a > b;}let c = way(2, 3); // false;
</script>
<script>let c = 0;function way(a, b) {if (a < b) {return;};c = a + b;}let c = way(2, 3); // undefined;document.write(c);  // 5
</script>

8) 闭包:
闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。

闭包的特性:
1.函数内再嵌套函数
2.内部函数可以引用外层的参数和变量
3.参数和变量不会被垃圾回收机制回收

var add = (function () {var counter = 0;return function () {return counter += 1;}
})();add();
add();
add();
// 计数器为 3
//li节点的onclick事件都能正确的弹出当前被点击的li索引<ul id="testUL"><li> index = 0</li><li> index = 1</li><li> index = 2</li><li> index = 3</li>
</ul>
<script type="text/javascript">var nodes = document.getElementsByTagName("li");for(i = 0;i<nodes.length;i+= 1){nodes[i].onclick = function(){console.log(i+1);//不用闭包的话,值每次都是4}(i);}
</script>

闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。直观的说就是形成一个不销毁的栈环境。

Javascript 函数详解相关推荐

  1. JavaScript零基础入门 5:JavaScript函数详解

  2. [js]JavaScript Number.toPrecision() 函数详解

    [js]JavaScript Number.toPrecision() 函数详解 JavaScript: numberObject.toPrecision( [ precision ] ) 如果没有提 ...

  3. JavaScript的函数详解

    JavaScript的函数详解 一.什么是函数 二.函数的使用 1.函数的声明 2.函数的调用 3.函数的参数:参入运算的数据 (1)形参(形式参数) (2)实参(实在参数): (3)参数之间的数据传 ...

  4. vue动画过渡 javascript钩子函数详解

    vue动画过渡js钩子函数详解 前言 js钩子函数运行时间 js钩子函数的过渡或动画 总结 结语 前言 转载请注明出处并附上链接. 本文中,enter(leave)过程指的是beforeEnter.e ...

  5. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  6. JavaScript事件详解-jQuery的事件实现(三)

    正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...

  7. 脚本——web_custom_request函数详解

    web_custom_request函数详解 在LR中当使用HTML录制方式时,录制的脚本中主要由函数web_link().web_submit_form().web_url().web_submit ...

  8. JavaScript原型详解(通俗易懂)

    JavaScript原型详解 1,前言 下面是2008年Github创建以来,各种编程语言的排名情况 其中JavaScript自2013年之后就盘踞第一名,成为github上被使用最多的语言,早期,J ...

  9. JavaScript对象详解

    转载请注明预见才能遇见的博客:https://my.csdn.net/ 原文地址:https://blog.csdn.net/weixin_42787326/article/details/81297 ...

最新文章

  1. 没想到!大数据发现微信上使用最多的表情竟是...原谅很多人不知道
  2. [js高手之路]设计模式系列课程-发布者,订阅者重构购物车
  3. jenkins中配置Ant
  4. 阿里 RocketMQ 如何让双十一峰值之下 0 故障?
  5. 数据结构 - 二叉树 - 面试中常见的二叉树算法题
  6. 关于Jeecg互联网化dubbo改造方案(下)
  7. 中缀表达式到前缀表达式和后缀表达式
  8. Hadoop学习笔记—16.Pig框架学习
  9. 常用计算机操作技巧与方法ppt,相见恨晚的20个常用PPT小技巧
  10. LAMP架构介绍及配置
  11. Dynamics CRM 365零基础入门学习(一)Dynamics介绍以及开发工具配置
  12. Web端兼容性测试--浏览器/平台/分辨率
  13. 如何看懂论文公式:LaTex数学公式分析
  14. 无法访问此网站 localhost 拒绝了我们的连接请求。
  15. 温度自动控制系统_反应釜温度控制智能化温控设备的趋势
  16. 存储数据的介质销毁时怎么处置
  17. 2020-12-15:【黑盒测试用例设计】测试方法之边界值分析法
  18. 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡...
  19. 中国计算机科学实验室,上海交通大学计算机科学与工程系(CSE)
  20. 轻松实现Android 更换皮肤(主题)

热门文章

  1. linq to sql报错,
  2. 一个怎样得到treeView值的小例子
  3. java list用法_Java List 用法详解及实例分析
  4. leetcode 面试题 17.21. 直方图的水量(单调栈)
  5. leetcode 228. 汇总区间
  6. leetcode1052. 爱生气的书店老板(滑动窗口)
  7. 域 嵌入图像显示不出来_如何(以及为什么)将域概念嵌入代码中
  8. 初级开发人员的缺点_在您作为初级开发人员的第一年获得此建议
  9. pymc3 贝叶斯线性回归_使用PyMC3进行贝叶斯媒体混合建模,带来乐趣和收益
  10. Luogu P2101 命运石之门的选择(分治+搜索)