前端每日一小步

? ? ? ?用js進行平時項目開發的時候會經常面臨著一個問題,就是要對變量的作用域進行分析判斷,今天就來淺談一下自己如何來進行區分的。

1.在js中這里指的是es3.0,沒有塊級作用域的概念,只存在函數作用域,即一個function里的變量為一個單獨的作用域,記住要用var進行聲明,否則就會上升至全局變量。其實這個還是比較好區分的,下面來給段代碼


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

因為在js中函數的函數聲明的那一刻起它的作用域就相應的產生了,這就是js里的詞法作用域,聲明的時候就確定了作用域的范圍,就像上面的代碼中c函數聲明時其產生的作用域是全局作用域,再a函數中調用c并不能改變c的作用域鏈,所以第一個輸出的為全局變量2,第二個就簡單了,先從a函數得作用域開始尋找b如果能找到就返回,不能找到就去父級查找,此情景可以找到就輸出1

2.在前端頁面如果要去寫后臺進行數據操作的sql語句時,最好是把這些語句給拆解到后臺實現,因為這里涉及到安全問題,sql不能寫select*from tablename 除了能造成性能問題外還存在一個安全問題,能過截獲這個來得知你的表結構^_^

3.js編程思想
js采用的是基于面向對象的編程思想,但是對于剛剛入門的小白或者說沒有面向對象思想編程的開發人員來說,要在自己程序中使用這種思想開始還是比較難的,比如 大部分或采用
//一個功能對應一個函數
var common = 23;
function·a(){
}
function b(){
}
.....
要使用的時候就直接執行該函數就可以了,但是相對的也有一些局限性 ,首先定義的函數,和一些變量都基于全局作用域的,這樣會污染全局變量,第二,函數與函數之間的邏輯上的關系很模糊,看不之間的關聯關系
如果采用面向對象的編程思想在加上解決全局變量污染可以采用以下方法
var model1 = (function common(){//使用自執行函數形成一個獨立的作用域,避免污染全局變量
? var selfEntiy ={};//定義一個對象
? selfEntiy.selfName = "jack";//定義該對象的私有屬性,不讓其被修改
? selfEntiy.init:fucntion(){
? ? this.load();//調用load方法

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

}())

4.在客戶端通過get方式向服務端請求數據時,當在url后面跟一些參數?時需要注意編碼的問題,會造成前后端編碼不一致的問題就會出現所謂的亂碼
解決辦法:客戶端通過encodeURIComponent()方法或者encodeURI()來進行編碼,兩者之間前者編碼范圍更廣
如:encodeURI:不會進行編碼的字符有82個 :!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent:不會進行編碼的字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
一般采用一種通用的方法進行編碼
function addURlParm(url,key,value){
? ? url +=(url.indexof("?") == -1:"?":"&");
? ? url+=encodeURIComponent(key)+"="+encodeURIComponent(value);
? ? return url;
}
相應的解碼方法decodeURIComponent() 和 decodeURI()?

5.關于使用圖片預加載的運用

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

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;},//創建子節點[節點,要創建的TAG,插入位置]

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

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

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

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

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

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容

  • 用js進行平時項目開發的時候會經常面臨著一個問題,就是要對變量的作用域進行分析判斷,今天就來淺談一下自己如何...
    飄落的楓閱讀 288評論 0 0
  • 《ijs》速成開發手冊3.0 官方用戶交流:iApp開發交流(1) 239547050iApp開發交流(2) 10...
    葉染柒丶閱讀 5,258評論 0 7
  • 本博客轉自:「作者:若愚鏈接:https://zhuanlan.zhihu.com/p/22361337來源:知乎...
    韓寶億閱讀 2,778評論 0 3
  • 今天六點就起床了,趁著早晨的好空氣就出門溜達溜達。 我2007年去上海,如今已經有十個年頭不在家里了。去年因為在上...
    一言二語閱讀 728評論 9 6
  • 最近公司一直在組織學習阿米巴經營,先是《阿米巴經營》,后有《六項精進》、《經營十二條》、《活法》,從阿米巴經...
    mufhy閱讀 333評論 0 2