日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Javascript中var引發(fā)的問題

MelonCard發(fā)布了一篇文章——”how one missing var ruined our launch“(”少寫了一個var毀了我的網(wǎng)站”),這篇文章是說MelonCard用Node.js做后臺,因為出了一個小高峰——有50-100人注冊,結(jié)果整個網(wǎng)站都不響應(yīng)了,而且還出現(xiàn)了很多奇怪的問題。當(dāng)他們調(diào)查到問題的要源的時候,他們發(fā)現(xiàn)下面的代碼少寫了一個var。

 
 
 
 
  1. app.all(‘/apps/:user_id/status’, function(req, res, next) { 
  2.     // … 
  3.     initial = extractVariables(req.body); 
  4. }); 

為什么inital少寫一個var會引發(fā)這個問題呢?因為如果你不寫var,這個局部的變量會被javascript當(dāng)成全局變量,而這個變量又是 一個函數(shù),所以,當(dāng)多用戶并發(fā)的時候,這個本應(yīng)該在不同用戶下互不干擾的變量,成了各個用戶共享的東西。試想,用戶A的數(shù)據(jù)被用戶B覆蓋了,用戶A和B的 數(shù)據(jù)還沒處理完,結(jié)果被新的C給搞亂了,程序的邏輯自然出現(xiàn)了問題。

在stackoverflow.com上有這么一個貼子說明了“有var”和“無var”的差別:

 
 
 
 
  1. // These are both globals 
  2. var foo = 1; 
  3. bar = 2; 
  4.   
  5. function test() 
  6.     var foo = 1; // Local 
  7.     bar = 2;     // Global 
  8.   
  9.     // Execute an anonymous function 
  10.     (function() 
  11.     { 
  12.         var wibble = 1; // Local 
  13.         foo = 2; // Inherits from scope above (creating a closure) 
  14.         moo = 3; // Global 
  15.     }()) 

上面這個示例告訴我們,如果你不用var,那么這個js引擎會一層一層地向上找父作用域中的變量,如果找到了,就用,如果找不到了,就會幫你定義一個全局的變量。上面這個例子充分說明了這一點。所以,如果你想在當(dāng)前的作用域用聲明變量,你一定要用var。這對于一些亂寫javascript代碼的程序員要注意了。這里再給大家介紹一個工具——

JSLint( http://www.jslint.com/ ),一個JS代碼質(zhì)量的分析工具,我們把上述stackoverflow的代碼copy到JSLint這個在線工具中,我們可以看到下面的報告:

這個報告說明了源碼中的那些變量的情況。


分享題目:Javascript中var引發(fā)的問題
本文URL:http://m.5511xx.com/article/dhscgoi.html