前端每日一小步

? ? ? ?用js進(jìn)行平時項(xiàng)目開發(fā)的時候會經(jīng)常面臨著一個問題度陆,就是要對變量的作用域進(jìn)行分析判斷鸵熟,今天就來淺談一下自己如何來進(jìn)行區(qū)分的。

1.在js中這里指的是es3.0扣典,沒有塊級作用域的概念妆毕,只存在函數(shù)作用域,即一個function里的變量為一個單獨(dú)的作用域贮尖,記住要用var進(jìn)行聲明笛粘,否則就會上升至全局變量。其實(shí)這個還是比較好區(qū)分的湿硝,下面來給段代碼


var b=2; function a(){ var b =1; c(); console.log(b)}; ? function c (){console.log (b)} ?; ? ? ?a(); 輸出結(jié)果為2闰蛔,1

因?yàn)樵趈s中函數(shù)的函數(shù)聲明的那一刻起它的作用域就相應(yīng)的產(chǎn)生了,這就是js里的詞法作用域图柏,聲明的時候就確定了作用域的范圍序六,就像上面的代碼中c函數(shù)聲明時其產(chǎn)生的作用域是全局作用域,再a函數(shù)中調(diào)用c并不能改變c的作用域鏈蚤吹,所以第一個輸出的為全局變量2,第二個就簡單了例诀,先從a函數(shù)得作用域開始尋找b如果能找到就返回,不能找到就去父級查找裁着,此情景可以找到就輸出1

2.在前端頁面如果要去寫后臺進(jìn)行數(shù)據(jù)操作的sql語句時繁涂,最好是把這些語句給拆解到后臺實(shí)現(xiàn),因?yàn)檫@里涉及到安全問題二驰,sql不能寫select*from tablename 除了能造成性能問題外還存在一個安全問題扔罪,能過截獲這個來得知你的表結(jié)構(gòu)^_^

3.js編程思想
js采用的是基于面向?qū)ο蟮木幊趟枷耄菍τ趧倓側(cè)腴T的小白或者說沒有面向?qū)ο笏枷刖幊痰拈_發(fā)人員來說桶雀,要在自己程序中使用這種思想開始還是比較難的矿酵,比如 大部分或采用
//一個功能對應(yīng)一個函數(shù)
var common = 23唬复;
function·a(){
}
function b(){
}
.....
要使用的時候就直接執(zhí)行該函數(shù)就可以了,但是相對的也有一些局限性 全肮,首先定義的函數(shù)敞咧,和一些變量都基于全局作用域的,這樣會污染全局變量辜腺,第二休建,函數(shù)與函數(shù)之間的邏輯上的關(guān)系很模糊,看不之間的關(guān)聯(lián)關(guān)系
如果采用面向?qū)ο蟮木幊趟枷朐诩由辖鉀Q全局變量污染可以采用以下方法
var model1 = (function common(){//使用自執(zhí)行函數(shù)形成一個獨(dú)立的作用域评疗,避免污染全局變量
? var selfEntiy ={};//定義一個對象
? selfEntiy.selfName = "jack";//定義該對象的私有屬性测砂,不讓其被修改
? selfEntiy.init:fucntion(){
? ? this.load();//調(diào)用load方法

}
selfEntiy.load: function(){
//
}
selfEntiy.submitData:function(){
//
}
return {
? ? init:selfEntiy.init,
? ? summit:selfEntiy.selfEntiy.submitData

}())

4.在客戶端通過get方式向服務(wù)端請求數(shù)據(jù)時,當(dāng)在url后面跟一些參數(shù)?時需要注意編碼的問題百匆,會造成前后端編碼不一致的問題就會出現(xiàn)所謂的亂碼
解決辦法:客戶端通過encodeURIComponent()方法或者encodeURI()來進(jìn)行編碼邑彪,兩者之間前者編碼范圍更廣
如:encodeURI:不會進(jìn)行編碼的字符有82個 :!,#胧华,$寄症,&,'矩动,(有巧,),*悲没,+篮迎,,,-示姿,.甜橱,/,:栈戳,;岂傲,=,?子檀,@镊掖,_,~褂痰,0-9亩进,a-z,A-Z
encodeURIComponent:不會進(jìn)行編碼的字符有71個:!缩歪, '归薛,(,),*主籍,-习贫,.,_崇猫,~沈条,0-9需忿,a-z诅炉,A-Z
一般采用一種通用的方法進(jìn)行編碼
function addURlParm(url,key,value){
? ? url +=(url.indexof("?") == -1:"?":"&");
? ? url+=encodeURIComponent(key)+"="+encodeURIComponent(value);
? ? return url;
}
相應(yīng)的解碼方法decodeURIComponent() 和 decodeURI()?

5.關(guān)于使用圖片預(yù)加載的運(yùn)用

有時候我們需要用到重復(fù)的圖片或者說是一次性展示多張圖片比如圖片墻,如果我們不做任何處理屋厘,那么首次引用的時候會出現(xiàn)圖片顯示慢或者在進(jìn)行css背景切換操作過程中會出現(xiàn)閃爍涕烧,造成這個問題的原因在于每張圖片加載都是一次http請求,當(dāng)圖片太大請求時間比較久就會出現(xiàn)視覺中的真空區(qū)汗洒,此時我們的處理方式就是在頁面初始化是就進(jìn)行圖片的緩存也就是預(yù)加載议纯,當(dāng)要使用圖片的時候?yàn)g覽器就會直接在緩存中進(jìn)行查找,這樣就會解決閃爍和圖片顯示慢的用戶體驗(yàn)效果溢谤。
方法為:var img = new Image();img.src = 'img.png'瞻凤;解決簡單的css背景切換可以直接在頁面上定義一個空的標(biāo)簽,然后賦予其相同的背景圖片樣式即可

6.封裝dom操作

window.Dom=Dom=

{

addEvent:function(s,fn){this.attachEvent?this.attachEvent('on'+s,fn):this.addEventListener(s,fn,false);return this;},//添加事件[事件(要去掉前面的on),方法]

delEvent:function(s,fn){this.detachEvent?this.detachEvent('on'+s,fn):this.removeEventListener(s,fn,false);return this;},//刪除事件[事件(要去掉前面的on),方法]

addDom:function(node,tag,first){var o=node.createElement(tag);first?node.insertBefore(o,node.firstChild):node.appendChild(o);return o;},//創(chuàng)建子節(jié)點(diǎn)[節(jié)點(diǎn)世杀,要創(chuàng)建的TAG阀参,插入位置]

delDom:function(node,obj){node.removeChild(obj);},//刪除子節(jié)點(diǎn)[父節(jié)點(diǎn),要刪除節(jié)點(diǎn)]

addImg:function(url){var img=new Image();img.src=url;return img;},//創(chuàng)建緩存圖片[圖片地址]

winh:function(){return Math.min(document.documentElement.clientHeight,document.body.clientHeight);},//返回瀏覽器可用高

mouseX:function(event){return (event.pageX || (event.clientX +l(document)));},//返回鼠標(biāo)的X座標(biāo)

mouseY:function(event){return (event.pageY || (event.clientY +t(document)));}//返回鼠標(biāo)的Y座標(biāo)

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瞻坝,一起剝皮案震驚了整個濱河市蛛壳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌所刀,老刑警劉巖衙荐,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異浮创,居然都是意外死亡忧吟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門斩披,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瀑罗,“玉大人,你說我怎么就攤上這事雏掠≌都溃” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵乡话,是天一觀的道長摧玫。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么诬像? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任屋群,我火速辦了婚禮,結(jié)果婚禮上坏挠,老公的妹妹穿的比我還像新娘芍躏。我一直安慰自己,他們只是感情好降狠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布对竣。 她就那樣靜靜地躺著,像睡著了一般榜配。 火紅的嫁衣襯著肌膚如雪否纬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天蛋褥,我揣著相機(jī)與錄音临燃,去河邊找鬼。 笑死烙心,一個胖子當(dāng)著我的面吹牛膜廊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淫茵,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爪瓜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了痘昌?” 一聲冷哼從身側(cè)響起钥勋,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辆苔,沒想到半個月后算灸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驻啤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年菲驴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骑冗。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赊瞬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贼涩,到底是詐尸還是另有隱情巧涧,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布遥倦,位于F島的核電站谤绳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缩筛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一消略、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瞎抛,春花似錦艺演、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至豪硅,卻和暖如春哩照,著一層夾襖步出監(jiān)牢的瞬間挺物,已是汗流浹背懒浮。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留识藤,地道東北人砚著。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像痴昧,于是被迫代替她去往敵國和親稽穆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 用js進(jìn)行平時項(xiàng)目開發(fā)的時候會經(jīng)常面臨著一個問題赶撰,就是要對變量的作用域進(jìn)行分析判斷舌镶,今天就來淺談一下自己如何...
    飄落的楓閱讀 283評論 0 0
  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,123評論 0 7
  • 本博客轉(zhuǎn)自:「作者:若愚鏈接:https://zhuanlan.zhihu.com/p/22361337來源:知乎...
    韓寶億閱讀 2,762評論 0 3
  • 今天六點(diǎn)就起床了,趁著早晨的好空氣就出門溜達(dá)溜達(dá)豪娜。 我2007年去上海餐胀,如今已經(jīng)有十個年頭不在家里了。去年因?yàn)樵谏?..
    一言二語閱讀 719評論 9 6
  • 最近公司一直在組織學(xué)習(xí)阿米巴經(jīng)營瘤载,先是《阿米巴經(jīng)營》否灾,后有《六項(xiàng)精進(jìn)》、《經(jīng)營十二條》鸣奔、《活法》墨技,從阿米巴經(jīng)...
    mufhy閱讀 319評論 0 2