JS的一些总结(函数声明和函数表达式的区别,函数中的this指向的问题,函数不同的调用方式,函数也是对象,数组中的函数调用)
一、函数声明和函数表达式的区别:
- 函数声明放在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指向的问题,函数不同的调用方式,函数也是对象,数组中的函数调用)的更多相关文章
- 闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别
闭包(Closure)和匿名函数(Anonymous function)/lambda表达式的区别 函数最常见的形式是具名函数(named function): function foo(){ con ...
- js对象数组中的某属性值 拼接成字符串
js对象数组中的某属性值 拼接成字符串 var objs=[ {id:1,name:'张三'}, {id:2,name:'李四'}, {id:3,name:'王五'}, {id:4,name:'赵六' ...
- js判断对象数组中是否存在某个对象
1. 如果要判断数组中是否存在某个元素的话很好判断,直接用数组的indexOf方法就好,存在返回当前索引不存在返回-1 var arr=[1,2,3,4] arr.indexOf(3) arr.ind ...
- 原型模式故事链(4)--JS执行上下文、变量提升、函数声明
上一章:JS的数据类型 传送门:https://segmentfault.com/a/11... 好!话不多少,我们就开始吧.对变量提升和函数声明的理解,能让你更清楚容易的理解,为什么你的程序报错了~ ...
- JavaScript(js)函数声明与函数表达式的区别
在JavaScript中,函数是经常用到的,在实际开发的时候,我想很多人都没有太在意函数的声明与函数表达式的区别,但是呢,这种细节的东西对于学好js是非常重要的. 函数声明与函数表达式用代码写出来是这 ...
- JS 函数提升&变量提升以及函数声明&函数表达式的区别
感谢原文作者:迟早会有猫 原文链接:https://www.cnblogs.com/SidselLoong/p/10515809.html 今天看js的变量提升问题,里面提到了函数提升.然后发现自己之 ...
- 【JS】函数提升变量提升以及函数声明和函数表达式的区别
今天看js的变量提升问题,里面提到了函数提升.然后发现自己之前一直把函数声明和函数表达式弄错,导致函数提升出错 一.变量提升 console.log(a) var a=100 //undefined ...
- js中的函数声明和函数表达式的区别
目录 一.声明与表达式的格式 1.1 声明式的格式: 1.2 表达式的格式: 二.区别 2.1 函数表达式可以直接在后面加括号执行,而函数声明不可以. 2.2 函数表达式可以被提前解析出来 2.3 命 ...
- JS中的提升(即变量和函数声明移动到代码顶部)
先看代码(第一个代码片段): console.log(a); var a = 1; 如果你认为这是一段不合法的代码,在调用console.log()的时候会输出undefined,你完全正确.但是如果 ...
- javascript中函数声明和函数表达式的区别 分类: JavaScript 2015-05-07 21:41 897人阅读 评论(0) 收藏
1.js中函数表达式的定义 表达式(expression)JavaScript中的一个短语,javascript会将其计算(evaluate)出一个结果.程序中的常量是一个最简单的表达式.变量名也是一 ...
随机推荐
- 米联客 osrc_virtual_machine_sdx2017_4 虚拟机的使用
今天大部分时间都在高csdn的博客的,一直无法和word关联,来不及写使用教程了,先发下载链接. 虚拟机安装的是ubuntu16.4.3,vivado软件是SDX2017.4版本,包括的vivado2 ...
- Python内存加载shellcode
生成 首先生成一个测试的msf shellcode msfvenom -p windows/x64/exec CMD=calc.exe -f python 把其中的shellcode复制出来留待待会使 ...
- openfeign与gateway中的httpClient类声明冲突
启动spring cloud中的网关,报错: ***************************APPLICATION FAILED TO START*********************** ...
- 【SoloPi】SoloPi使用3-性能测试-启动时间测试
响应耗时计算工具Soloπ响应耗时计算工具,通过录屏分帧的方式自动识别起始点和结束点,精确计算耗时. 特性模拟用户视觉,计算结果更贴近用户体验自动记录点击起始点,自动识别屏幕变化结束点通过OpenCV ...
- 文件流FileStream的读写
1.FileStream文件流的概念: FileStream 类对文件系统上的文件进行读取.写入.打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道.标准输入和标准输出.读写操作可以指定 ...
- 移动端隐藏滚动条,css方法
小白第一次发文记录自己遇到的问题. 关于隐藏移动端滚动条方法很多,这里只说本人用到的. 在PC端隐藏html右侧默认滚动条 html { /*隐藏滚动条,当IE下溢出,仍然可以滚动*/ -ms-ove ...
- 将网址url中的参数转化为JSON格式的两种方法
在我们进入主题前,我先先看下获取网址URL的方法: window.location.href // 设置或获取整个URL为字符串 window.location.hash // 设置或获取href属性 ...
- JS中浏览器的数据存储机制
一.JS中的三种数据存储方式 cookie.sessionStorage.localStorage 二.cookie 1.cookie的定义: cookie是存储在浏览器上的一小段数据,用来记录某些当 ...
- JSONObject和URL以及HttpURLConnection的使用
1 将java对象类转成json格式 首先引入依赖jar文件 注意依赖文件的版本号,高版本可能没有对应的类 2 我的实体类中包含内部类注意内部类要public才能被序列化成json格式 import ...
- shell脚本编写mind
首先我们要缩小这个问题的范围 如果在面试中被问到这样的问题,说说shell脚本编写思路 如:你是在公司主要负责zabbix监控的 对答如下:shell脚本这个说法挺广的,您看我这么跟您说吧,我在平时工 ...