JS中的一些概念的整理及理解

先看看函数定义时发什么什么?

函数定义时就确定了其作用域和作用域链。

执行时创,无法访问建执行环境(execution),执行时相当于实例化了一发。除了执行环境当然有作用域链,这时会将实例化的对象(也就是活动对象推入顶端,就是第0号位置),其他的作用域链继承定义时的作用域链。

红皮书中是这样写的:执行环境定义了变量和函数有权访问其他数据,决定他们各自行为。每个执行环境中都有一个变量对象,环境中定义的变量和函数都保存在这个对象中,无法访问。

当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的最前端始终是当前执行代码所在环境的变量对象。如果这个环境是函数,将其活动对象作为变量对象。

活动对象最初只包含一个对象:arguments对象。

偶然还看到了JS中没有块级作用域这个概念。

实现这个样子的

 for(var i=0;i<10;i++){
//dosth(i);
}
console.log(i);

这个会出来10的!!!!   fuck   执行完这个i  也会出现在循环外的执行环境中   真是日了动物园。由此应该很能简单的理解那个闭包经典例子。

function closure(){
var arr=new Array();
  for(var i=0;i<10;i++){
    arr[i]=function(){
    return i;
    };
  }
  return arr;
}

然而书上说运出来是 十个10

搞不懂了  先扔这里。

下面来看看闭包的概念啊

又来抄书了

红皮书上是这什么说的:有权访问其他函数作用域中变量的函数。

闭包创建方式:在一个函数内再创建一个函数。

在一个函数内部定义的函数会将外部函数的活动对象添加到他的作用域链中。

外部函数返回后,作用域链会被销毁,但内部函数仍在引用其活动对象,活动对象不会被销毁。

差不多好像就这些   这篇博客比较详细

http://www.cnblogs.com/lhb25/archive/2011/09/06/javascript-scope-chain.html

下篇整理下对原型的理解。

时间: 2024-08-06 15:16:31

JS中的一些概念的整理及理解的相关文章

javascript (js)中的基本概念

1. 基本数据类型 1.1 number (数字)在js中没有整形和浮点型的区分,所有的数字都是浮点型标识, 采用64位的浮点格式来表示数字.如果数字类型用在字符串连接表达式中,则会自动转换成字符串, 在JS中表示16进制通过在数字前加"0x"或"0X"(零). 1.2 string (字符串)字符串类型是实用单引号('')或双引号("")括起来的unicode字符序列, 一些特殊的字符可以通过转义符来标识.如果字符串用在数字表达式环境中,字符串

【转】简单了介绍js中的一些概念(词法结构) 和 数据类型(部分)。

1 , javascript字符集: javascript采用的是Unicode字符集编码. 为什么要采用这个编码呢? 原因很简单,16位的Unicode编码可以表示地球人的任何书面语言.这是语言 国际化的一个重要特征.(大家也许见过用中文写脚本,比如:function 我的函数() {} ); Javascript中每个字符都是用2个字节表示的.(因为是16位编码) 2 ,大小写敏感: js是一种区分大小写的语言. 注意下:以前我也犯过的错误. HTML是不区分大小写的.经常看见有人这么写, 

在JS中,对象和数组的区别理解

学习js一段时间,一度搞不清楚“数组”和对象的根本区别.二者都可以用来表示数据的集合. 比如说一个数组是a=[1,2,3,4],一个对象是a={0:1,1:2,2:3,3:4} 输出alert(a[1]),二者的输出结果相同.花了一点时间整理了我对对象和数组的理解. 区别一: 数组是有序数据的集合,而对象是无序数据的集合. 区别二: 数组的数据没有名称,只有下标,而对象的数据需要指定名称. 学过其他语言的人可能会提出“关联数组“是可以有名称的. 比如在js中,可以这样定义一个关联数组: a[“城

js 中闭包的概念

js中原型的概念

对js中闭包,作用域,原型的理解

前几天,和朋友聊天,聊到一些js的基础的时候,有一种‘好像知道,好像又不不知道怎么讲的感觉’...于是捡起书,自己理一理,欢迎拍砖. 闭包 理解闭包首先要理解,js垃圾回收机制,也就是当一个函数被执行完后,其作用域会被收回,如果形成了闭包,执行完后其作用域就不会被收回. 如果某个函数被他的父函数之外的一个变量引用,就会形成闭包 闭包的作用,就是保存自己私有的变量,通过提供的接口(方法)给外部使用,但外部不能直接访问该变量. 例子(使用闭包): var test=(function(){ var

JS中的async/await的用法和理解

1.首先需要理解async 和 await的基本含义 async 是一个修饰符,async 定义的函数会默认的返回一个Promise对象resolve的值,因此对async函数可以直接进行then操作,返回的值即为then方法的传入函数 // 0. async基础用法测试 async function fun0() { console.log(1) return 1 } fun0().then( x => { console.log(x) }) // 输出结果 1, 1, async funct

关于js中闭包的理解

1.以前很不理解js中闭包的概念及使用,下面来看一下 function foo() { var a = 123; var b = 456; return function () { return a; } } var fn = foo(); 上面的代码只能访问 a和b,但是不能修改,这是js中闭包的技术之一 function foo() { var a = 123; var b = 456; return { get_a: function () { return a; }, set_a: fu

JQuery之append和appendTo的区别,还有js中的appendChild用法

JQuery之append和appendTo的区别 append()前面是要选择的对象,后面是要在对象内插入的元素内容 appendTo()前面是要插入的元素内容且为Jquery对象,而后面是要选择的对象 实例: $('#a').append('content'); $('<div>content</div>').appendTo($('#a')); 注意appendTo前面一定要是Jquery对象. appendChild(Node)这个 方法一般是在指定元素节点的最后一个子节点