前段时间在每天往返的地铁上抽空将 <你不知道的JavaScript(上卷)>读了一遍,这本书很多部分写的很是精妙,对于接触前端时间不太久的人来说,就好像是叩开了JavaScript的另一扇门,很多内容醍醐灌顶!所以决定将这本书分四个部分整理出来,同时也这本书强烈推荐给正在进阶的小伙伴们.这篇博文主要整理第一部分 作用域. 词法作用域 理解作用域 首先要介绍下JS参与程序 var a = 2的处理过程的演员表: 引擎 从头到尾负责整个JavaScript 程序的编译及执行过程. 编译器 引擎的好…
调用对象位于作用域链的前端,局部变量(在函数内部用var声明的变量).函数参数及Arguments对象都在函数内的作用域中--这意味着它们隐藏了作用域链更上层的任何同名的属性. 2010年9月14日,我去参加网易网页工程师招聘会,应聘JS工程师职位.有幸参加笔试,然后有幸栽在笔试,呵呵.废话少说,抓出音响极深的一题重新研究研究. 题目大概是:写出如下代码的输出结果并进行分析 var tt = 'aa'; function test(){ alert(tt); var tt = 'dd'; ale…
第一章.引言 1.5 面向对象的程序设计常用概念 对象(名词):是指"事物"在程序设计语言中的表现形式. 这里的事物可以是任何东西,我们可以看到它们具有某些明确特征,能执行某些动作. 这些对象特征就叫做属性(形容词),动作称之为方法(动词). 类:实际上就是对象的设计蓝图或制作配方.类更多的是一种模板,而对象就是在这些模版的基础上被创建出来的. 封装:主要阐述对象中包含的内容.通常包括: 相关数据(用于存储属性) 基于这些数据所能做的事(所能调用的方法) 聚合:将几个现有对象合并成一个…
关于闭包,初学者会被绕的晕头转向,在学习的路上也付出了很多精力来理解. 让我们一起来揭开闭包神秘的面纱. 闭包晦涩的定义 看过很多关于闭包的定义,很多讲的云里雾里,晦涩难懂.让不少人以为闭包是多么玄乎的东西.在我看过的所有书籍中,我更喜欢<你不知道的javascript(上卷)>的定义: 当函数可以记住并访问所在的词法作用域时,就产生了闭包,或者说函数在创建时的词法作域之外执行. 通俗的来说(不严谨): 就是函数套函数,子函数可以有权访问父函数的变量.父函数的父函数的变量.一直到全局变量.子函…
在 JavaScript 作用域不完全指北 中,我们介绍了作用域的概念以及 JavaScript 引擎.编译器和作用域的关系.作用域有两种主要的工作模型:词法作用域和动态作用域.其中最为普遍的也是大多数编程语言所采用的是词法作用域,我们主要对其进行研究学习.在传统编译语言的流程中, 程序中的一段源代码在执行之前会经历三个步骤, 统称为"编译". 分词/词法分析(Tokenizing/Lexing) 这个过程会将由字符组成的字符串分解成(对编程语言来说) 有意义的代码块, 这些代码块被称…
关于 Javascript 的函数作用域.调用对象和闭包之间的关系很微妙,关于它们的文章已经有很多,但不知道为什么很多新手都难以理解.我就尝试用比较通俗的语言来表达我自己的理解吧. 作用域 Scope Javascript 中的函数属于词法作用域,也就是说函数在它被定义时的作用域中运行而不是在被执行时的作用域内运行.这是犀牛书上的说法.但"定义时"和"执行(被调用)时"这两个东西有些人搞不清楚.简单来说,一个函数A在"定义时"就是 functio…
1. DOMContentLoaded DOM树构建完成时触发该事件 load 页面加载完毕触发 原生js document.addEventListener('DOMContentLoaded', function(){ //code..... }, false); document.addEventListener('load', function(){ //code... }, false); jquery //DOMContentLoaded $(document).ready(func…
你不知道的JavaScript上卷 JavaScript和Java的关系就像Carnival和Car的关系一样,八竿子打不着. JavaScript易上手,但由于其本身的特殊性,相比其他语言能真正掌握JavaScript的人比较少.JavaScript语言本质上有许多复杂的概念,但却用一种看起来比较简单的方式体现出来,比如回调函数.JavaScript开发者只是简单使用这些特性而不会去关心语言内部的实现原理. 阿喀琉斯之踵 不要满足于只是让代码正常工作,而是弄清楚为什么,拥抱整个JavaScri…
什么是闭包 <你不知道的JS>里有对闭包的定义:"当函数可以记住并访问所在的词法作用域,即使函数是在当前作用域之外执行,这就产生了闭包." 讲闭包是啥的太多了...就一句带过...在我的认知中,就是函数套函数,内部的函数能直接访问外部函数的变量.而外部函数的变量,就能被隐藏起来.从而它的优点是能把这些变量隐藏起来,但它的缺点也是这些隐藏的变量难以释放... 总而言之,就是函数里内嵌函数,当这个函数访问外函数的变量时,就可以叫闭包,而真正实现功能呢,就是在外函数return…
this是什么? this 是在运行时进行绑定的,并不是在编写时绑定,它的上下文取决于函数调用时的各种条件.this 的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式.当一个函数被调用时,会创建一个活动记录(有时候也称为执行上下文).这个记录会包含函数在哪里被调用(调用栈).函数的调用方法.传入的参数等信息.this 就是记录的其中一个属性,会在函数执行的过程中用到. 调用位置与调用栈: 调用位置就是函数在代码中被调用的位置(而不是声明的位置). 下面我们来看看到底什么是调用栈和调用位…