var函数

js闭包

余生颓废 提交于 2020-03-08 01:09:26
​ 今天呢咱们来聊聊这个js闭包,我们基本上在面试中,必然会问到的问题:什么是闭包?说说你对闭包的理解.闭包的作用是什么? ​ 闭包也是一个很不好理解的概念,往往我们遇到的机会很多很多,很多朋友呢都说了对闭包的理解,问题表达的方式不一样,但是呢,最后都对闭包没有很清晰的理解.所以呢我这边就帮助大家理解什么是闭包.其实说起来,可以深,也可以浅.先由浅着说.之前呢,在网上也是找了不少的资料,看见人家理解的闭包,我提取出了说法有问题 的4点: ​ 1.闭包是指有权访问另一个函数作用域中变量(参数)的函数(不可取) ​ 2.闭包就是能读取其他函数内部变量的函数(不可取) ​ 3.闭包可以理解成定义一个函数内部的函数(不可取) ​ 4.函数就是闭包(不可取) ​ 这4点呢,其实呢,怎么说呢,不能否认它是错的,只能说不严谨,第一点,可以得到一个结论,闭包是一个函数,第二点也差不多的意思,第三点有意思了,定义一个函数内部的函数,的确有这个特征,而第四点,其实也是对的,因为MDN上的解释是:闭包是一个特殊的函数对象.那上面的几种说法都是不严谨的,其实最终我查询资料,都归纳了一句话: ​ 当一个函数能够记住并访问到其所在的词法作用域及作用域链,特别强调是在其定义的作用域外进行的访问,此时该函数和其上层执行上下文共同构成闭包 ​ 怎么理解这句话呢,其中包含两个新的名词,词法作用域及作用域链

上下文执行栈

徘徊边缘 提交于 2020-03-07 17:10:52
知识点: * 执行上下文 * 每次函数执行的时候,会产生一个执行上下文,执行上下文是一个对象 * 执行上下文里面会创建一个变量对象 ,里面存放着当前函数内的变量 * 基本数据类型保存在变量对象里的,引用数据数据类型要单独在单堆内存里开辟空间保存。 * 变量对象里保存的就是堆里的内存地址 1 function task(m, n) { 2 var a = 1; 3 var b = { 4 name: '张三' 5 } 6 var c = [1, 2, 3]; 7 } 8 task(10, 20); 我们可以知道task的执行上下文 1 let taskExecutionContext = { 2 this: window, 3 [[Scope]]: [函数的活动对象,全局的变量对象], 4 //Variable Object 变量对象 里面存的是当前函数执行要使用到的变量 5 VO: { 6 m: 10, 7 n: 20, 8 a: 1, 9 b: '内存地址指向对象{name: 张三}', 10 c: '内存地址指向数组[1,2,3]' 11 } 12 } 某个函数第一次被调用时,会创建一个执行环境(execution context)及相应的作用域链,并把作用域链赋值给一个特殊的内部属性(即 [[Scope]] ) 当代码在一个环境中执行时,会创建变量对象的一个作用域链

js的本质、全局属性

↘锁芯ラ 提交于 2020-03-07 07:02:47
一、js的本质   1、js的本质就是处理数据,  数据来自于后台数据库,  所以变量就起到一个临时数据的作用   Ecmascript 制定了js的数据类型   2、数据类型有哪些?     字符串(string)、数字(number)、布尔(Boolean)、空(null)、underfined、对象      *注:基本数据类型:字符串(string)、数字(number)、布尔(Boolean)、空(null)、underfined        对象:数组(Array)、json、函数(function)、日期、数字对象等。       基本数据类型:就是简单的赋值:       var s="hello";    var s=12;  var s=true;  var s=null;  var s=undefined;       引用数据类型:他是将内存地址赋值给变量;       var s =[ "hello",123,true,"张三"]       var json =[ "name":"zhang","age":23]   3、怎么找到这个方法和属性归属的?     1)、arr.find()  find()是arr的     2)、没有带.  在谁的环境下是谁的       判别变量的数据类型 type of 变量名,返回的数据类型 二、全局属性  

50 前端--Javascript

拟墨画扇 提交于 2020-03-07 06:56:55
目录 Javascript ECMAScript和JavaScript的关系 1. js代码引入 2. 数据类型 var 数值类型(number) 字符串(string) 布尔值(boolean) null 和 undefined Object类型 Symbol 类型 3. 类型查询 typeof 4. 运算符 算术运算符 比较运算符 逻辑运算符 赋值运算符 5. 流程控制 单条件 多条件判断 switch 切换 (case语句) 6. for循环 7. while循环 8. 三元运算 9. 函数 普通函数 匿名函数 自执行函数 函数的全局变量和局部变量 作用域 闭包 10. 构造函数(面向对象) 11. Date对象 12. JSON 13. RegExp对象(正则) Math对象 Javascript ECMAScript和JavaScript的关系   1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。   该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标

JavaScript基础总结

纵饮孤独 提交于 2020-03-06 17:04:53
一、javascript引入方式: <!-- 第三种页面引入JavaScript的方式:外链式,推荐 --> <!-- 如果作为引用时标签对里的代码无效--> <script src="../vscode/js/hello.js"> //这里写的js代码无效 </script> <!-- 第二种页面引入JavaScript的方式:内嵌式,部分推荐 --> <script> //这里的代码就有用了 alert('hello world ,again') </script> </head> <body> <!-- 第一种页面引入JavaScript的方式:行间事件,不推荐使用 --> <div onclick="alert('hello world')">这是一个div</div> </body> 二、JavaScript基本语法: 1.定义: var iNum01 = 12,sTr ='abc',bisMove = true; // 如果没有定义类型和值,默认就是undefine var iNum02; 2.js基本类型: 1、number 数字类型 2、string 字符串类型 3、boolean 布尔类型 true 或 false 4、undefined undefined类型,变量声明未初始化,它的值就是undefined 5、null null类型,表示空对象

关于for循环里面异步操作的问题

坚强是说给别人听的谎言 提交于 2020-03-06 14:57:32
https://www.cnblogs.com/vipzhou/p/6519552.html 关于for循环里面异步操作的问题 首先来看一个比较简单的问题,我们想实现的就是每隔1s输出0-4的值,就是这么简单,看下错误写法: 1 2 3 4 5 6 7 8 function test() { for ( var i = 0; i < 5; ++i) { setTimeout(function() { console.log( "index is :" , i); }, 1000); } } test(); 以上代码会如何输出?输出如下: 1 2 3 4 5 index is : 5 index is : 5 index is : 5 index is : 5 index is : 5 而且该操作几乎是在同一时间完成,setTimeout定时根本就没有起作用,这是因为:单线程的js在操作时,对于这种异步操作,会先进行一次“保存”,等到整个for循环执行结束后,此时i的值已经变成5,因为setTimeout是写在for循环中的,相当于存在5次定时调用,这5次调用均是在for循环结束后进行的,所以自然而然输出都是5, 正确的实现有几种,一般情况下,我们使用递归实现,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

flex---->ActionScript 3.0基本语法

纵然是瞬间 提交于 2020-03-06 09:47:57
测试输出: trace(123); trace("abc"); 变量与常量: var a:int, b:int, c:int; a = b = c = 6; trace(a, b, c); //6 6 6 const d:int = 123; trace(d); 数据类型: //整形 var iV1:int = -1; var iV2:int = new int(-2); var iV3:int = new int("-3"); trace(iV1); trace(iV2); trace(iV3); //无符号整形 var uV1:uint = 1; var uV2:uint = new uint(2); trace(uV1); trace(uV2); //浮点数 var nV1:Number = 3.14159265; var nV2:Number = new Number(-3.14); trace(nV1); trace(nV2); //布尔值 var bV1:Boolean = true; var bV2:Boolean = new Boolean(false); trace(bV1); trace(bV2); //字符串 var sV1:String = 'ActionScript'; var sV2:String = new String("万一的 Delphi 博客"

flex---->ActionScript 3.0基本语法

拟墨画扇 提交于 2020-03-06 09:47:44
测试输出: trace(123); trace("abc"); 变量与常量: var a:int, b:int, c:int; a = b = c = 6; trace(a, b, c); //6 6 6 const d:int = 123; trace(d); 数据类型: //整形 var iV1:int = -1; var iV2:int = new int(-2); var iV3:int = new int("-3"); trace(iV1); trace(iV2); trace(iV3); //无符号整形 var uV1:uint = 1; var uV2:uint = new uint(2); trace(uV1); trace(uV2); //浮点数 var nV1:Number = 3.14159265; var nV2:Number = new Number(-3.14); trace(nV1); trace(nV2); //布尔值 var bV1:Boolean = true; var bV2:Boolean = new Boolean(false); trace(bV1); trace(bV2); //字符串 var sV1:String = 'ActionScript'; var sV2:String = new String("万一的 Delphi 博客"

flex---->ActionScript 3.0基本语法

人走茶凉 提交于 2020-03-06 09:47:17
测试输出: trace(123); trace("abc"); 变量与常量: var a:int, b:int, c:int; a = b = c = 6; trace(a, b, c); //6 6 6 const d:int = 123; trace(d); 数据类型: //整形 var iV1:int = -1; var iV2:int = new int(-2); var iV3:int = new int("-3"); trace(iV1); trace(iV2); trace(iV3); //无符号整形 var uV1:uint = 1; var uV2:uint = new uint(2); trace(uV1); trace(uV2); //浮点数 var nV1:Number = 3.14159265; var nV2:Number = new Number(-3.14); trace(nV1); trace(nV2); //布尔值 var bV1:Boolean = true; var bV2:Boolean = new Boolean(false); trace(bV1); trace(bV2); //字符串 var sV1:String = 'ActionScript'; var sV2:String = new String("万一的 Delphi 博客"

Flex入门--Flex基本语法

岁酱吖の 提交于 2020-03-06 09:46:02
1 Flex 变量 var v1: int = 9 ; //int v1 = 9; var v2: uint = 10 ; var v3: Boolean = true ; var v4: Number = 4.5 ; var v5: String = "HelloWorld" ; var v6: String = ' HelloWorld Again ' ; var v7: * = 3 ; //*类型:任意数据类型 trace ( v7 ); v7 = ' hello ' ; trace ( v7 ); var v8 ; //v8只定义没赋值,为undefined trace ( "v8=" , v8 ); var v9: String ; trace ( v9 ); //String 类似java中的null var v10: Array = [ 2 , 3 , 4 , 5 ]; //数组 trace ( v10 ); var v11: Object = { id: 3 , name: "zhangsan" , age: 18 }; //map v11是个对象类型,写了个大括号,里面是 属性-值 格式,类似json,或者叫关联性数组。 trace ( v11 . name ); Flex 中定义变量的格式为 : var name: type [ = initvalue ] 2