成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript變量作用域之我見

開發 前端
相信大家都知道,JavaScript中變量作用域只有兩種,全局作用域與函數中的局部作用域,文本就主要探討JavaScript變量作用域。

相信大家都知道,JavaScript中變量作用域只有兩種,全局作用域與函數中的局部作用域(有人認為不同script節點間也存在一種作用域,稱之為段作用域,理由是在后面的script的節點中定義的變量,在這個script節點沒有被解析之前,前面的script節點是不能訪問這個變量的,這種依賴于代碼解析順序的特殊情況,不在我們這篇文章的討論之列)。

比如下面的代碼:

  1. var a = 1;  
  2. function f(b)  
  3. {      
  4. var c = 2;  

a就是我們聲明的全局變量,c就是我們聲明的局部變量,b作為函數f的形參,也是一個局部變量。

我們再看下面的代碼:

  1. function outer()  
  2. {  
  3.     var o;     
  4.  function inner()  
  5. {  
  6.         var i;   
  7.    }} 

可以看到o和i都是局部變量,只不過o的作用域范圍為函數outer的函數體,而i的作用域范圍為inner的函數體。

我們再看一段代碼:

  1. var g = 1;    
  2.  function outer(){        
  3.      var o = 1;       
  4.      function inner(){    
  5.    var i = 1;         
  6.     debugger;         
  7.      }         
  8.     inner();      
  9.  }    
  10.  outer(); 

debugger?沒錯,就是debugger。呵呵,我們單獨運行這段代碼,打開瀏覽器的調試環境,比如ff瀏覽器的firebug

javascript變量作用域之我見

我們選擇腳本這一項,然后查看debugger運行時的調用堆棧情況,可以看到,除了有inner,outer以外,還有一個scope1.html()這么一個函數,這個函數從何而來的?

我們再看如下代碼:

  1. debugger

javascript變量作用域之我見

可以看到,單獨運行debugger的時候,firebug的調用堆棧只有一個scope1.html()這個函數被調用。

我們知道,此時是沒有任何自定義的函數被調用的,那么這個函數從何而來的?我們不妨做如下大膽猜測,這是瀏覽器的js引擎自動生成的,我們所有的代碼都運行在一個瀏覽器預先定義的一個函數里,而在這個函數里聲明的變量,就是我們所謂的全局變量。

這樣,我們就可以以一種一致的方式,去看待JavaScript代碼:所有的代碼都是以函數方式運行的,JavaScript的變量作用域只有一種,那就是函數的局部作用域。

以上言論純屬個人意見,有不同見解,歡迎拍磚。

ps:

1 關于scrope1.html()這個函數,在不同的調試環境下,命名可能不一樣,比如ie下就是global script code,chrome下就是anonymous function。

2 推薦大家都運行一下上面的代碼,查看一下函數運行時的調用堆棧以及變量的監控情況,對于理解JavaScript的作用域、作用域鏈、閉包等概念都有很大的幫助。

原文鏈接:http://www.cnblogs.com/rt0d/archive/2011/04/18/2019242.html

【編輯推薦】

  1. 泄露你的JavaScript技術很爛的五個表現
  2. 經典格斗游戲《街頭霸王》的JavaScript實現
  3. 九個令人驚嘆的HTML 5和JavaScript實驗
  4. 分享7款超棒的JavaScript網格插件
  5. 對JavaScript中call和apply的理解
責任編輯:陳貽新 來源: 劉陽的博客
相關推薦

2013-09-05 10:07:34

javaScript變量

2016-12-19 11:10:32

JavaScript變量作用域

2011-09-06 09:56:24

JavaScript

2019-03-13 08:00:00

JavaScript作用域前端

2020-12-16 11:09:27

JavaScript語言開發

2017-09-14 13:55:57

JavaScript

2021-03-09 08:50:58

JavaScript前端作用域

2010-01-07 16:16:03

VB.NET變量作用域

2020-11-19 07:49:24

JS變量作用域

2021-10-28 10:26:35

Javascript 高階函數前端

2011-05-12 18:26:08

Javascript作用域

2015-07-21 13:39:58

Javascript作用域

2009-06-01 11:16:48

PHP網站開發變量作用域

2015-08-18 13:42:42

js作用域鏈變量

2021-12-06 07:15:48

Javascript作用域閉包

2010-02-03 16:42:45

C++變量作用域

2024-03-14 11:27:16

C++變量編程

2015-07-03 11:23:51

JavaScript作用域聲明提前

2021-05-25 10:15:20

JavaScript 前端作用域

2009-11-03 11:40:37

VB.NET共享變量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本三级在线网站 | 一区二区三区视频在线观看 | 中文字幕一区在线观看视频 | 欧美日韩视频在线 | 亚洲精品久久久一区二区三区 | 成人在线视频看看 | 色婷婷一区二区三区四区 | 伊人操| www精品 | 精品久久久网站 | 日韩久久久久久 | 国产一级视频在线 | 午夜合集| 亚洲视频免费在线 | 日日夜夜天天久久 | 久久综合久久久 | 视频一区中文字幕 | 91成人免费 | 免费视频二区 | 国产免国产免费 | 中文在线播放 | 国产精品久久久久久久久久久久午夜片 | 日韩视频一区在线观看 | 亚洲精品免费视频 | 亚洲成人免费 | 97人人草 | 久久国产精品久久久久 | 中国一级毛片免费 | 欧美国产日韩在线 | 视频在线一区二区 | 欧美性a视频 | 久久精品国产一区二区三区 | 精品一区二区三区四区外站 | 日韩久久久久久久久久久 | 日本精品裸体写真集在线观看 | 颜色网站在线观看 | 一区二区精品视频 | 亚洲国产成人久久综合一区,久久久国产99 | 中文字幕视频一区 | 国产成人精品综合 | 97日日碰人人模人人澡分享吧 |