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

  • 函数声明放在if——else语句中,在IE8中会出现问题
  • 函数表达式则不会
   <script>
if(true){
function f1(){
console.log("我是第一个函数");
}
}else{
function f1(){
console.log("我是第二个函数");
}
}
f1();//我是第一个函数
f1();//我是第二个函数(IE8)
//函数声明的函数,放在if--else语句中,在IE8中显示的不一样
//但是当使用函数表达式的方法,却不会
if(true){
var f2=function(){
console.log("我是第一个函数");
}
}else{
var f2=function (){
console.log("我是第二个函数");
}
}
f2();//我是第一个函数
</script>

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

  • 普通函数中的this------------window
  • 定时器中的this---------------window
  • 构造函数中的this------------实例对象
  • 对象。方法中的this----------当前的实例对象
  • 原型方法中的this----------实例对象
  • 严格模式下的this-----------undefined
  <script>
//1.普通函数中的this------------window
function f1(){
console.log(this);
}
f1();//Window
//2.定时器中的this---------------window
setInterval(function(){
console.log(this);//Window
},1500)
//3.构造函数中的this------------实例对象
//4.对象。方法中的this----------当前的实例对象
//5.原型方法中的this----------实例对象
function Person(){
this.name=name;
this.show1=function(){
console.log(this);
}
}
Person.prototype.show2=function(){
console.log(this);
}
var per=new Person("小明");
per.show1();//Person {name: "", show1: ƒ}
per.show2();//Person {name: "", show1: ƒ}
//6.严格模式下的this-----------undefined
function f2(){
"use strict";
console.log(this);
}
f2();//undefined
</script>

三、函数不同的调用方式

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

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

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

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

   <script>
var arr=[
function f1(){console.log("f1函数")},
function f2(){console.log("f2函数")},
function f3(){console.log("f3函数")},
function f4(){console.log("f4函数")}
];
arr.forEach(function(ele){
ele();//f1函数 f2函数 f3函数 f4函数
});
</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. netty--使用注意事项

  2. Ubuntu下apt-get命令详解(转)

    原文:https://www.cnblogs.com/liyu925/p/6100388.html

  3. Spring Cloud Alibaba学习笔记(2) - Nacos服务发现

    1.什么是Nacos Nacos的官网对这一问题进行了详细的介绍,通俗的来说: Nacos是一个服务发现组件,同时也是一个配置服务器,它解决了两个问题: 1.服务A如何发现服务B 2.管理微服务的配置 ...

  4. ASP.NET Core利用拦截器 IActionFilter实现权限控制

    “麦荻网教系统”采用了前后端代码分离的架构,即“Miidy.Cloud.Console”站与“Miidy.Cloud.Manage”站(两个前端站)同时通过web api的方式调用“Miidy.Clo ...

  5. ivew数控件Tree自定义节点内容示例分析

    ivew数控件Tree自定义节点内容示例分析 demo地址:https://run.iviewui.com/plcWlM4H <template> <Tree :data=" ...

  6. iview的table中Tooltip的使用

    这篇文章主要介绍了iview-admin中在table中使用Tooltip提示效果. 1. table中文字溢出隐藏,提示气泡展示所有信息 jLongText(item){ item.render = ...

  7. you might not need jquery

    What's the oldest version of IE you need to support? IE10 /**json**/ var request = new XMLHttpReques ...

  8. EntityFramework进阶(一)- DbContext与ObjectContext互转

    本系列原创博客代码已在EntityFramework6.0.0测试通过,转载请标明出处 EF中我们常用的是DbContext作为上下文,如果要想获取元数据等信息还是要用到ObjectContext这个 ...

  9. element-ui DatePicker 日期选择器 让结束日期大于开始日期

    element-ui  DatePicker 日期选择器 <el-date-picker v-model="addForm.startDate" type="dat ...

  10. mysql limit和offset用法

    limit和offset用法 mysql里分页一般用limit来实现 1. select* from article LIMIT 1,3 2.select * from article LIMIT 3 ...