一、函数声明和函数表达式的区别:

  • 函数声明放在if——else语句中,在IE8中会出现问题
  • 函数表达式则不会
  1. <script>
  2. if(true){
  3. function f1(){
  4. console.log("我是第一个函数");
  5. }
  6. }else{
  7. function f1(){
  8. console.log("我是第二个函数");
  9. }
  10. }
  11. f1();//我是第一个函数
  12. f1();//我是第二个函数(IE8)
  13. //函数声明的函数,放在if--else语句中,在IE8中显示的不一样
  14. //但是当使用函数表达式的方法,却不会
  15. if(true){
  16. var f2=function(){
  17. console.log("我是第一个函数");
  18. }
  19. }else{
  20. var f2=function (){
  21. console.log("我是第二个函数");
  22. }
  23. }
  24. f2();//我是第一个函数
  25. </script>

二、函数中的this指向的问题

  • 普通函数中的this------------window
  • 定时器中的this---------------window
  • 构造函数中的this------------实例对象
  • 对象。方法中的this----------当前的实例对象
  • 原型方法中的this----------实例对象
  • 严格模式下的this-----------undefined
  1. <script>
  2. //1.普通函数中的this------------window
  3. function f1(){
  4. console.log(this);
  5. }
  6. f1();//Window
  7. //2.定时器中的this---------------window
  8. setInterval(function(){
  9. console.log(this);//Window
  10. },1500)
  11. //3.构造函数中的this------------实例对象
  12. //4.对象。方法中的this----------当前的实例对象
  13. //5.原型方法中的this----------实例对象
  14. function Person(){
  15. this.name=name;
  16. this.show1=function(){
  17. console.log(this);
  18. }
  19. }
  20. Person.prototype.show2=function(){
  21. console.log(this);
  22. }
  23. var per=new Person("小明");
  24. per.show1();//Person {name: "", show1: ƒ}
  25. per.show2();//Person {name: "", show1: ƒ}
  26. //6.严格模式下的this-----------undefined
  27. function f2(){
  28. "use strict";
  29. console.log(this);
  30. }
  31. f2();//undefined
  32. </script>

三、函数不同的调用方式

  • 普通函数-------直接函数名()
  • 构造函数-------通过new来调用,创建对象
  • 对象方法------点语法,对象.方法调用

四、函数也是对象,对象不一定是函数

  • 函数有prototype原型,是对象,对象中有__proto__,原型是对象
  • 如果一个对象里面有prototype又有__proto__,既是原型也是对象
  • Math是对象,但是没有__proto__,不是函数
  • 所有的函数实际上都是Function的构造函数创建出来的实例对象

五、数组中的函数调用(forEach)

  1. <script>
  2. var arr=[
  3. function f1(){console.log("f1函数")},
  4. function f2(){console.log("f2函数")},
  5. function f3(){console.log("f3函数")},
  6. function f4(){console.log("f4函数")}
  7. ];
  8. arr.forEach(function(ele){
  9. ele();//f1函数 f2函数 f3函数 f4函数
  10. });
  11. </script>

JS的一些总结(函数声明和函数表达式的区别,函数中的this指向的问题,函数不同的调用方式,函数也是对象,数组中的函数调用)的更多相关文章

  1. 闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别

    闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别 函数最常见的形式是具名函数(named function): function foo(){ con ...

  2. js对象数组中的某属性值 拼接成字符串

    js对象数组中的某属性值 拼接成字符串 var objs=[ {id:1,name:'张三'}, {id:2,name:'李四'}, {id:3,name:'王五'}, {id:4,name:'赵六' ...

  3. js判断对象数组中是否存在某个对象

    1. 如果要判断数组中是否存在某个元素的话很好判断,直接用数组的indexOf方法就好,存在返回当前索引不存在返回-1 var arr=[1,2,3,4] arr.indexOf(3) arr.ind ...

  4. 原型模式故事链(4)--JS执行上下文、变量提升、函数声明

    上一章:JS的数据类型 传送门:https://segmentfault.com/a/11... 好!话不多少,我们就开始吧.对变量提升和函数声明的理解,能让你更清楚容易的理解,为什么你的程序报错了~ ...

  5. JavaScript(js)函数声明与函数表达式的区别

    在JavaScript中,函数是经常用到的,在实际开发的时候,我想很多人都没有太在意函数的声明与函数表达式的区别,但是呢,这种细节的东西对于学好js是非常重要的. 函数声明与函数表达式用代码写出来是这 ...

  6. JS 函数提升&变量提升以及函数声明&函数表达式的区别

    感谢原文作者:迟早会有猫 原文链接:https://www.cnblogs.com/SidselLoong/p/10515809.html 今天看js的变量提升问题,里面提到了函数提升.然后发现自己之 ...

  7. 【JS】函数提升变量提升以及函数声明和函数表达式的区别

    今天看js的变量提升问题,里面提到了函数提升.然后发现自己之前一直把函数声明和函数表达式弄错,导致函数提升出错 一.变量提升 console.log(a) var a=100 //undefined ...

  8. js中的函数声明和函数表达式的区别

    目录 一.声明与表达式的格式 1.1 声明式的格式: 1.2 表达式的格式: 二.区别 2.1 函数表达式可以直接在后面加括号执行,而函数声明不可以. 2.2 函数表达式可以被提前解析出来 2.3 命 ...

  9. JS中的提升(即变量和函数声明移动到代码顶部)

    先看代码(第一个代码片段): console.log(a); var a = 1; 如果你认为这是一段不合法的代码,在调用console.log()的时候会输出undefined,你完全正确.但是如果 ...

  10. javascript中函数声明和函数表达式的区别 分类: JavaScript 2015-05-07 21:41 897人阅读 评论(0) 收藏

    1.js中函数表达式的定义 表达式(expression)JavaScript中的一个短语,javascript会将其计算(evaluate)出一个结果.程序中的常量是一个最简单的表达式.变量名也是一 ...

随机推荐

  1. 米联客 osrc_virtual_machine_sdx2017_4 虚拟机的使用

    今天大部分时间都在高csdn的博客的,一直无法和word关联,来不及写使用教程了,先发下载链接. 虚拟机安装的是ubuntu16.4.3,vivado软件是SDX2017.4版本,包括的vivado2 ...

  2. Python内存加载shellcode

    生成 首先生成一个测试的msf shellcode msfvenom -p windows/x64/exec CMD=calc.exe -f python 把其中的shellcode复制出来留待待会使 ...

  3. openfeign与gateway中的httpClient类声明冲突

    启动spring cloud中的网关,报错: ***************************APPLICATION FAILED TO START*********************** ...

  4. 【SoloPi】SoloPi使用3-性能测试-启动时间测试

    响应耗时计算工具Soloπ响应耗时计算工具,通过录屏分帧的方式自动识别起始点和结束点,精确计算耗时. 特性模拟用户视觉,计算结果更贴近用户体验自动记录点击起始点,自动识别屏幕变化结束点通过OpenCV ...

  5. 文件流FileStream的读写

    1.FileStream文件流的概念: FileStream 类对文件系统上的文件进行读取.写入.打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道.标准输入和标准输出.读写操作可以指定 ...

  6. 移动端隐藏滚动条,css方法

    小白第一次发文记录自己遇到的问题. 关于隐藏移动端滚动条方法很多,这里只说本人用到的. 在PC端隐藏html右侧默认滚动条 html { /*隐藏滚动条,当IE下溢出,仍然可以滚动*/ -ms-ove ...

  7. 将网址url中的参数转化为JSON格式的两种方法

    在我们进入主题前,我先先看下获取网址URL的方法: window.location.href // 设置或获取整个URL为字符串 window.location.hash // 设置或获取href属性 ...

  8. JS中浏览器的数据存储机制

    一.JS中的三种数据存储方式 cookie.sessionStorage.localStorage 二.cookie 1.cookie的定义: cookie是存储在浏览器上的一小段数据,用来记录某些当 ...

  9. JSONObject和URL以及HttpURLConnection的使用

    1 将java对象类转成json格式 首先引入依赖jar文件 注意依赖文件的版本号,高版本可能没有对应的类 2 我的实体类中包含内部类注意内部类要public才能被序列化成json格式 import ...

  10. shell脚本编写mind

    首先我们要缩小这个问题的范围 如果在面试中被问到这样的问题,说说shell脚本编写思路 如:你是在公司主要负责zabbix监控的 对答如下:shell脚本这个说法挺广的,您看我这么跟您说吧,我在平时工 ...