一.作用域(what?) 官方解释是:"一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域." 单从文字理解比较难懂,举个栗子: function outer(){ // 声明变量 var name = "ukerxi"; // 定义内部函数 function inner() { console.log(name); // 可以访问到 name 变量 } } console.log(name); // 报错,unde…
一  作用域(执行环境) 作用域:定义了变量和函数有权访问的其他数据,决定了他们各自的行为.--------<JS高级程序设计>4.2 好难理解啊~参考了参考尤克希的博客内容,大体上理解了作用域. 作用域:规定了函数和变量的可用的有效的范围.这样的好处是,避免了命名冲突:确定何时销毁他们,释放内存.这个作用域中所有的函数和对象,都保存在变量对象里.每个作用域都有这样一个变量对象.但是我们编写的代码是无法访问到这个对象的,解析器在处理数据时会在后台使用它. 作用域分为两类:全局作用域和函数作用域…
最近在面试时被问到了对作用域链的理解,感觉当时回答的不是很好,今天就来说说js中的作用域链吧. 首先来说说js中的执行环境,所谓执行环境(有时也称环境)它是JavaScript中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据 ,决定了它们各自的行为.而每个执行环境都有一个与之相关的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 理解了执行环境,现在就看看什么是作用域链吧.每个函数都有自己的执行环境,当代码在执行环境中执行时,就会创建变量对象的作用域链.作用域链保证了对执…
首先介绍一些即将用到的概念: 执行环境:  它定义了变量和函数有权访问其他数据的范围,每一个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个变量对象中.   所有javascript代码都是在一个特定的执行环境中被执行的,当调用一个javascript函数时,就会创建相应的执行环境,如果又调用另外一个函数,则又会创建一个新的执行环境,当调用函数返回后,执行过程会返回原始的执行环境,所以javascript的执行环境明显是按照栈的形式存储,即这一系类的执行环境构成了一个执…
window 是最大最外围的执行环境,然后每个函数都有自己的执行环境.JS代码是从上到下执行的,单纯的用语言描述可能会有点绕,而且不大直观.我们看着代码来 console.log('global begin:' + i); var i = 1 foo(1) function foo(i){ if(i == 4){ return } console.log('foo() begin:' + i); foo(i+1) console.log('foo() end:' + i); } console.…
ECMAscript5添加一种严格模式的运行模式("use strict"),让你的js语句在更加严格的环境下进行运行: 一.主要作用: 消除版本javascript中一些不合理及不严谨之处,减少怪异行为 提高编译效率,提高运行速度 为新版本的javasript做铺垫兼容 二.如何使用启动严格模式的标志就是,在开头第一行中添加"use strict"字符串,在低版本的浏览器,或是说js引擎中,只是把这个标志当做一句字符串而已,而支持ES5的浏览器会进行启动"…
如图除全局作用域外,每个函数都会创建自己的作用域.作用域在函数定义时就确定了,而不是在函数调用时确定. 下面按照程序执行的步骤加上上下文环境. 第一步:程序加载时已经确定全局上下文环境,并随着程序的执行对变量进行赋值. 第二步:程序执行到第27行,调用fn(10),此时生成此次调用fn函数时的上下文环境,压栈,并将此上下文环境设置为活动状态. 第三步:执行到第23行时,调用bar(100),生成此次调用的上下文环境,压栈,并设置为活动状态. 第四步:执行完第23行,bar(100)调用完成.则b…
对于前端来说,浏览器检测已经不陌生了,在做一些页面是,需要针对不同的浏览器进行处理不同的逻辑,最简单的就是区分pc和移动端的浏览器,或是android 和ios下的浏览器. 一.浏览器检测的由来?     在20世纪90年代初期,网景公司开发的 Netscape Navigator开始流行起来,随后便产生的浏览器大战,主要在于两大巨头之间(Netscape/微软ie):由于那时各家浏览器都有自己的标准,使用内核也不一样,个版本之间也存在差异(万恶的IE):造成网页开发者需要针对不同的浏览器进行适…
原作者信息 作者:词晖 链接:http://www.zhihu.com/question/19586885/answer/48933504 来源:知乎 著作权归原作者所有,转载请联系原作者获得授权. 书写顺序 1.位置属性(position, top, right, z-index, display, float等) 2.大小(width, height, padding, margin) 3.文字系列(font, line-height, letter-spacing, color- text…
所谓代码,当你随便命名一个变量:var name = "ukerxi"; 就是一句代码:但当你的代码写出来后,对于后续维护及阅读的人,就可以看出代码是否,易读,易理解:优雅的代码总是遵守一定的规范,这篇文章就说说几种命名空间的运用,运用好了,可以有利于多人开发,模块化代码,代码解耦有一定的作用! 先来看看一个错误的示范: // 定义一些数据 var name = "ukerxi"; var version = "1.0.0"; var hobby…