开始就来说说作用域这个蛋疼的东西。里面可能会出现各种的问题 .先给一个简单的例子大家猜猜结果是什么

var   a="b"; function text(){ alert(a);var a="c";alert(a);} text();    结果就是  a:undefined  a:"c";  为什么第一个a 不是"b"了。这个就要说到函数作用域了。他使用的作用范围我们总结为:函数里面申明的变量是局部的,就只在函数体内部有定义。他们是局部变量,作用域是局部性的。它们只在函数体内部有定义。(注:var a="b"; function text(){ alert(c);var a="c";alert(a);} text();不如说这个你说结果又是什么:结果就是 语法错误 C 没有定义。其实我是这么理解的:又回到上面的那句话了》函数定义的变量值在函数里面才有用:为什么第一个例子会是undefined了。就是js在函数执行之前会把作用域内所有用var声明抽到头部统一生成。这个肯定就是undefined了。)于是我们又会产生一个问题?为什么js没有块级作用域了?我举个列子来说明一下:var a="b"; if(true){ var a="c"; alert(a); } alert(a); 我任务的答案是 a:"c"  a:"b" 可是结果是:a:"c" a:"c" 我产生疑问了这个是为什么?如果有块级作用域,明显if语句将创建局部变量name,并不会修改全局name,可是没有这样,所以Js没有块级作用域。function test(flag){ if(flag){ var a="a"; for(var i=0;i<2;i++) ; } alert(i); alert(a);} test(true);结果:2 "a"  这个应该很好理解吧。现在我们在看看这个例子。function test(flag){ if(flag){  a="a"; for(var i=0;i<2;i++) ; } alert(i);} test(true);alert(a) 答案是什么了。按照我们上面的理解 :应该是  i:"2",a is not defined  为什么是  2 a  去掉了var  他会自动升级为全局变量。下面我们遗留一个问题  function test(flag){ if(flag){  var a="a"; for(var i=0;i<2;i++) ; } alert(i);} test(true);alert(a)  答案又是什么啊??下面这个例子又是什么了???  alert(a);function test(flag){ if(flag){  var a="a"; for(var i=0;i<2;i++) ; } alert(i);} test(true);

说说js作用域的更多相关文章

  1. JS作用域面试题总结

    关于JS作用域问题,是面试的时候面试官乐此不疲的面试题,有时候确实是令人抓狂,今天看到一个讲解这个问题的视频,明白了那些所谓的“原理”顿时有种豁然开朗的感觉~~~ 1.js作用域(全局变量,局部变量) ...

  2. js作用域问题

    <script type="text/javascript"> alert(i);//Uncaught ReferenceError: i is not defined ...

  3. js 作用域

    js 作用域 js作用域链查找,子函数能取到父函数中定义的变量. 前段时间误写成如下形式: 这只是普通的函数调用,没有父子的关系,child()函数会在全局查找pi变量,没找到所以报错. 最近发现原来 ...

  4. 08.01 签到! js 作用域

    js 作用域 : 1.js 没有块作用域 : for (var i = 0;i < 4; i++){ } alert(i) // i = 3 2.js 没有动态作用域: function f1( ...

  5. js作用域链

    js作用域链 <script> var up = 555; function display(){ var innerVar = 2; function inner(){ var inne ...

  6. easyui datagrid load 封装 参数问题 js 作用域

    var temp = { LoginAccount: $('#LoginAccount').val(), ShopName: $('#ShopName').val() }; function doSe ...

  7. js作用域零碎的知识点,不同的script块,虽然同是全局变量

    如下代码,第一次弹出a,因为解析器里找到var a,赋予a变量undefined,弹出undefined <!DOCTYPE html> <html> <head> ...

  8. JS作用域,作用域,作用链详解

    前言   通过本文,你大概明白作用域,作用域链是什么,毕竟这也算JS中的基本概念. 一.作用域(scope) 什么是作用域,你可以理解为你所声明变量的可用范围,我在某个范围内申明了一个变量,且这个变量 ...

  9. JS作用域和ASP(vbs)作用域比较

    一.js作用域,先上图: 以上代码执行的效果是,依次弹出 undefined, undefined, a, a,为什么是这样的结果啦?因为JS的作用域为链式作用域. 作用域链: 用VAR声明一个变量时 ...

  10. js作用域对象与运用技巧

    1. JS作用域 1.1 全局作用域和局部作用域 函数外面声明的就是 全局作用域 函数内是局部作用域 全局变量可以直接在函数内修改和使用 变量,使用var是声明,没有var是使用变量. 如果在函数内使 ...

随机推荐

  1. Android app AOP添加埋点技术总结

    目标:通过面向切面编程来实现对源代码无侵入的埋点.     方式 能力 缺点 学习曲线   XPosed 运行期hook 能hook自己应用进程的方法: 能hook别的应用的方法: 能hook系统方法 ...

  2. Cosmos —— Big Data at Microsoft

    1, 1,cosmos stores. Cosmos stores data as streams – a file-like structure Streams are split apart in ...

  3. C++内存管理

    1. 栈(Stack):         位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效.2. 堆(Heap):        由new申请的内存,由delete负责 ...

  4. 高可用thrift客户池的实现详解

    最近,公司要求将组内的thrift客户端组件推广至公司内使用.基本的要求如下: 1.高可用 2.集成名称服务,也就配置文件支持服务发现 3.解耦,客户端和高可用组件解耦,简单来说就是,如果以后要切换其 ...

  5. HSSFWorkBooK用法

    public ActionResult excelPrint() { HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件 HSSFShe ...

  6. item2快捷键

    整理使用 iTerm 2 过程中得常用快捷键,Mac 原来自带的终端工具 Terminal 不好用是出了名的,虽然最近几个版本苹果稍微做了些优化,功能上,可用性方面增强不少,无奈有个更好用的 Iter ...

  7. Ubuntu 16.04 安装ftp服务器

    1.sudo apt-get update 2.sudo apt-get install vsftpd ,执行完该步骤,vsftpd服务已经安装 3.创建ftp用户 a,创建用户目录 sudo mkd ...

  8. 分享一个常用Adb命令

    分享一个常用Adb命令 首先 首先感谢@xuxu的常用adb命令,收益良多,但是已经不能满足于我,所以补充了下. 再者 好久没发帖了,最近论坛老司机们都在讨论/总结,我就用这个干货回报吧. 最后 基于 ...

  9. NYOJ之题目1058部分和问题

    ---------------------------------------- 简单搜索+剪枝 因为考虑到可能会有多个解,所以是将中间过程保存最后才一起打印出来的 AC代码: 1: 2: impor ...

  10. Fight my work!

    来这个公司第一天工作, 上来就是装ubantu系统,对于玩linux玩的不熟的我.还是相当吃力的, 反正有问题尝试着自己解决,不会就问, 压力还是很大了. 学了一下企业的历史,理念等相关信息,也没重点 ...