关于js作用域问题】的更多相关文章

关于JS作用域问题,是面试的时候面试官乐此不疲的面试题,有时候确实是令人抓狂,今天看到一个讲解这个问题的视频,明白了那些所谓的“原理”顿时有种豁然开朗的感觉~~~ 1.js作用域(全局变量,局部变量)内部可以访问外部,但外部的不能访问内部的  ; function aaa(){ alert(a); }; aaa(); //a 为外部变量即全局变量,所以可以直接访问到 结果为10 function aaa(){ ; }; aaa(); alert(a); //a 为函数aaa()内部变量量即局部变…
<script type="text/javascript"> alert(i);//Uncaught ReferenceError: i is not defined i=11; </script> <script type="text/javascript"> alert(i);//undefined var i=11; alert(i);//11 </script> 代码1: var name="hel…
js 作用域 js作用域链查找,子函数能取到父函数中定义的变量. 前段时间误写成如下形式: 这只是普通的函数调用,没有父子的关系,child()函数会在全局查找pi变量,没找到所以报错. 最近发现原来是手贱敲错,真想抽自己. 两个变量 notDefine(未定义).notInit(定义了未初始化),用 typeof 运算符的结果一样,但有本质区别 未定义的变量是不存在的,只有用typeof运算符时不报错,对其做任何其他操作都会报错.…
js 作用域 : 1.js 没有块作用域 : for (var i = 0;i < 4; i++){ } alert(i) // i = 3 2.js 没有动态作用域: function f1(){ var x = 10; f(); } function f(){ alert(x) } f1(); // x is not defined 3.词法作用域(静态作用域  或者 叫 闭包)作用域链 function main(){ function sub1(){ function sub2(){ }…
js作用域链 <script> var up = 555; function display(){ var innerVar = 2; function inner(){ var innerVal = 4; console.log(up); } inner(); } display(); //这里涉及到了3个作用域链对象 inner, display, window, 查找变量会依次先上查找 </script> <script> //函数内部,局部变量的优先级比同名的全…
var temp = { LoginAccount: $('#LoginAccount').val(), ShopName: $('#ShopName').val() }; function doSearch1() { $('#datagrid').datagrid('load', temp); } function doSearch2() { $('#datagrid').datagrid('load', { LoginAccount: $('#LoginAccount').val(), Sh…
如下代码,第一次弹出a,因为解析器里找到var a,赋予a变量undefined,弹出undefined <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js作用域</title> <script type="text/javascript"> alert(a); //第一次弹出a为undefined var a…
前言   通过本文,你大概明白作用域,作用域链是什么,毕竟这也算JS中的基本概念. 一.作用域(scope) 什么是作用域,你可以理解为你所声明变量的可用范围,我在某个范围内申明了一个变量,且这个变量能在这个范围内可用, 那么我可以说此范围就是该变量的作用域. 作用域一般分为局部作用域和全局作用域. 怎么理解呢,先说局部作用域.假设我在A范围内用var申明了一个变量a,变量a只能在范围A内使用,超出A范围就调用不到,那么这样的变量a就是局部变量,范围A就是所说的局部作用域. function A…
一.js作用域,先上图: 以上代码执行的效果是,依次弹出 undefined, undefined, a, a,为什么是这样的结果啦?因为JS的作用域为链式作用域. 作用域链: 用VAR声明一个变量时,就为该变量所在的对象添加了一个属性,由于JS的变量都是对象的属性,而该对象可能又是其它对象的属性,而所有的对象都是WINDOWS属性,所以这些对象的关系可以看作一条链,链头就是变量的所处对象,链尾就是WINDOWS对象. 我们来分析一下上面函数中变量的作用域链.第一个alert输出的str,它的作…
1. JS作用域 1.1 全局作用域和局部作用域 函数外面声明的就是 全局作用域 函数内是局部作用域 全局变量可以直接在函数内修改和使用 变量,使用var是声明,没有var是使用变量. 如果在函数内使用var来声明变量,在函数内会覆盖同名的全局变量 1.2 变量提升 在变量声明之前 去使用变量 会得到 undefined ,而不是报错 函数内,如果声明了跟全局变量同名的局部变量, 在声明之前使用改变量,得到undefined( 该变量已经是局部的啦) 1.3 作用域链 当一个作用域 使用某个变量…