自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Javascript中var引發(fā)的問(wèn)題

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

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

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

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

在stackoverflow.com上有這么一個(gè)貼子說(shuō)明了“有var”和“無(wú)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.     }()) 

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

 

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

這個(gè)報(bào)告說(shuō)明了源碼中的那些變量的情況。

原文鏈接:http://coolshell.cn/articles/7480.html

責(zé)任編輯:陳四芳 來(lái)源: 酷殼網(wǎng)
相關(guān)推薦

2015-04-13 09:21:00

JavaScript企業(yè)環(huán)境中巨大變革

2021-02-08 08:04:52

JavaScript語(yǔ)言OOP

2018-09-05 11:03:37

Memcache頻率限制

2010-09-02 14:59:23

非授權(quán)DHCP

2009-07-01 18:24:00

微軟驅(qū)動(dòng)JSP網(wǎng)站開(kāi)發(fā)

2020-09-30 08:06:39

JavaScript基礎(chǔ)編程

2017-09-26 10:00:15

前端JS語(yǔ)法

2010-01-07 11:21:25

2009-02-03 09:30:00

2021-04-08 19:07:54

安全Spring Bootendpoint

2024-02-28 08:12:25

SSE接口代理

2021-11-23 09:00:59

消息堆積擴(kuò)容RocketMQ

2021-10-13 11:00:27

數(shù)據(jù)泄露漏洞信息安全

2021-09-07 10:57:30

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2009-06-30 16:08:19

性能問(wèn)題代碼寫法

2023-06-25 08:05:09

MySQL事務(wù)并發(fā)

2013-09-30 09:18:39

2021-04-28 08:34:15

AirTag蘋果精準(zhǔn)定位

2020-06-23 08:26:43

深度學(xué)習(xí)氣候變化AI

2009-06-16 08:48:00

OSPF NSSACCNP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)