前端每日一小步

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

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


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

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

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



3關(guān)于js的作用域易錯點犯建,.js的賦值順序為自右向左

functionfoo() {

var a = b = 0;

//.. .按照js的賦值順序自右向左讲冠,首先b = 0,此時b為全局變量适瓦,然后將 var a = b 竿开;此時a為局部變量 a = 0;

//可以采用鏈式的聲明方式:即 var a ,b; a=b=0;此時a玻熙,b都為局部變量

}


4:之前在做angular開發(fā)一個項目的時候遇到了一個問題:客戶端請求到服務(wù)器然后服務(wù)器寫文件到客戶端實現(xiàn)文件的下載否彩,一開始我只是用了$http.get(url)去向后端發(fā)送一個請求,然后后端生成一個文件然后將該文件以流的形式寫入到瀏覽器嗦随,也許是第一次接觸該需求并不太了解客戶端需要進行什么操作列荔,反而把精力集中到后端的研究上(java 只是懂那么一點),花了我一整天的時間啊称杨,然后才發(fā)現(xiàn)是采用了ajax發(fā)送請求后肌毅,并沒有對返回的信息做任何處理,以至于沒有出現(xiàn)文件在瀏覽器上下載的效果姑原,最后有兩個個解決方案是:1:使用form表單提交的方式進行請求悬而,返回后的數(shù)據(jù)是由form表單根據(jù)表單結(jié)構(gòu)自動完成的并不需要用代碼來對數(shù)據(jù)進行處理,而ajax請求是需要用代碼來對返回的數(shù)據(jù)進行處理
2:仍然使用ajax的方式進行請求 不過需要對返回的數(shù)據(jù)進行處理 :$http({ method:"post",url:url,data:data,headers:{'Content-Type':'application/x-www-form-urlencoded'}}).success(function(){ console.log("success")})

}

5:當兩個span元素都設(shè)置為display:inline-block時會出現(xiàn)兩個元素水平方向沒有對齊锭汛,解決這個問題可以利用vertical-align:top 笨奠,把元素的頂端與行中最高元素的頂端對齊,不過這個屬性ie并不支持

6.當刪除數(shù)組的元素采用:users.splice(users.indexOf(user),1)進行操作就可以避免傳統(tǒng)刪除時由于數(shù)組長度變化而index仍加1而造成的刪除位置不對的錯誤

7.判斷一個變量是否為數(shù)組唤殴,對象般婆,function等類型????

Object.prototype.toString.call(param)=='[object Array]'

8.實現(xiàn)深copy的性能最快的方法

let obj 1 = json.parse(json.stringify(obj));

9.實現(xiàn)統(tǒng)計字符串的字節(jié)長度方法

function charAtLeng(str){
?var num = str.length;
?for(var i=0;i<str.length;i++){
? ? ?if(str[i].charCodeAt()>255){
? ? ? ? num++
? ? ?}
? }
?return num
}

10.使用哈希算法對數(shù)組進行去重

function temple(array){
? ? var newArray = [],object={};
? ? ?for(var i=0,lengths=array.length;i<lengths;i++){
? ? ? ? ? if(!object[array[i]]){
? ? ? ? ? ? ? object[array[i]] = 1;
? ? ? ? ? ? ? newArray.push(array[i])
? ? ? ? ? ?}
? ? ? }
? ? ?return newArray
}

11、?判斷一個字符串中出現(xiàn)次數(shù)最多的字符朵逝,統(tǒng)計這個次數(shù)

? var obj= {},index = 0,key='',count=0;

? function checkString(str){

? ? for(var i=0;i<str.length;i++){

? ? ? ? obj[str[i]]?obj[str[i]]++:obj[str[i]] = 1//如果存在就在原來的基礎(chǔ)上給value加1蔚袍,如果是第一次出現(xiàn)就賦值為1

? ? }

? ? for(var j in obj){

? ? ? ? if(obj[j]>count){

? ? ? ? ? ? count = obj[j]//如果值大就賦值給count

? ? ? ? ? ? key = j;

? ? ? ? }

? ? }

? ? ? return '出現(xiàn)頻率最高的為'+key+'其中出現(xiàn)的次數(shù)為'+count

? }

12、獲取數(shù)組或者字符串中的最大值或最小值
//最大值
Math.max.apply(null,array)//相當于直接調(diào)用Math.max() 方法配名,不過由于提供的方法不支持數(shù)組類型的參數(shù)啤咽,可以用這個方法進行規(guī)避
Math.max(string) 或Math.max.call(null,string)
//最小值
Math.min.apply(null,array)
Math.min(string) 或Math.min.call(null,string)

13.判斷瀏覽器內(nèi)核(看是否為chrome瀏覽器)
var ?ua = navigator.userAgent;
var isChrome = ua.indexOf('Chrome');
14.判斷一個值是否是數(shù)組? 使用Array.isArray(value)方法

15.Object.keys(obj).length//返回對象中有多少元素,可以用來判斷對象是否為空

16.const arr = [...new Set([0, 1, 1, null, null])]; 對數(shù)組進行去重,返回的arr為[0,1渠脉,null]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宇整,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芋膘,更是在濱河造成了極大的恐慌鳞青,老刑警劉巖霸饲,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異臂拓,居然都是意外死亡厚脉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門埃儿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來器仗,“玉大人,你說我怎么就攤上這事童番【ィ” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵剃斧,是天一觀的道長轨香。 經(jīng)常有香客問我,道長幼东,這世上最難降的妖魔是什么臂容? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮根蟹,結(jié)果婚禮上脓杉,老公的妹妹穿的比我還像新娘。我一直安慰自己简逮,他們只是感情好球散,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著散庶,像睡著了一般蕉堰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上悲龟,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天屋讶,我揣著相機與錄音,去河邊找鬼须教。 笑死皿渗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的轻腺。 我是一名探鬼主播羹奉,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼约计!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起迁筛,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤煤蚌,失蹤者是張志新(化名)和其女友劉穎耕挨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尉桩,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡筒占,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜘犁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翰苫。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖这橙,靈堂內(nèi)的尸體忽然破棺而出奏窑,到底是詐尸還是另有隱情,我是刑警寧澤屈扎,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布埃唯,位于F島的核電站,受9級特大地震影響鹰晨,放射性物質(zhì)發(fā)生泄漏墨叛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一模蜡、第九天 我趴在偏房一處隱蔽的房頂上張望漠趁。 院中可真熱鬧,春花似錦忍疾、人聲如沸闯传。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丸边。三九已至,卻和暖如春荚孵,著一層夾襖步出監(jiān)牢的瞬間妹窖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工收叶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留骄呼,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓判没,卻偏偏與公主長得像蜓萄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子澄峰,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

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

  • 用js進行平時項目開發(fā)的時候會經(jīng)常面臨著一個問題嫉沽,就是要對變量的作用域進行分析判斷,今天就來淺談一下自己如何...
    飄落的楓閱讀 261評論 0 0
  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,123評論 0 7
  • 1.幾種基本數(shù)據(jù)類型?復(fù)雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined俏竞、Nul...
    極樂君閱讀 5,514評論 0 106
  • 首先上圖~166飄過~(鹵煮四級538绸硕,六級480堂竟,非英語專業(yè),給小伙伴們參考~) 其實本來沒想到會過的玻佩,所以一直...
    桐煙閱讀 1,321評論 4 8
  • 桃之夭夭咬崔,灼灼其華税稼。之子于歸,宜其室家垮斯。桃之夭夭郎仆,有蕡其實。之子于歸甚脉,宜其家室丸升。桃之夭夭,其葉蓁蓁牺氨。之子于歸狡耻,宜其...
    九尾妖閱讀 642評論 23 15