1. 【Web前端基礎】js運算符有哪些
JavaScript中的運算符有很多,主要分為算術運算符,等同全同運算符,比較運算符,字元串運算符,邏輯運算符,賦值運算符等。這些運算符都有一些屬於自己的運算規則,下面就為大家介紹一下JavaScript中的運算符。
一、JavaScript運算符的種類
1、算術運算符:+ 、 - 、* 、 / 、 % 、 -(一元取反) 、 ++ 、 --
2、等同全同運算符:== 、 ===、 !== 、 !===
3、比較運算符:< 、 > 、 <= 、 >=
4、字元串運算符:< 、 > 、 <= 、 >= 、 = 、 +
5、邏輯運算符:&& 、 ||、 !、
6、賦值運算符:=、 +=、 *=、 -=、 /=
2. 【Web前端基礎】算術運算符的優先順序順序
算術運算的優先順序順序:先乘除,後加減。如有括弧,先算括弧內的算式,後算括弧外的算式。如有小括弧、中括弧、大括弧,先算小括弧內的,再算中括弧內的,再算大括弧內的。
3. 計算機裡面什麼是webshell
webshell就是以asp、php、jsp或者cgi等網頁文件形式存在的一種代碼執行環境,主要用於網站管理、伺服器管理、許可權管理等操作。使用方法簡單,只需上傳一個代碼文件,通過網址訪問,便可進行很多日常操作,極大地方便了使用者對網站和伺服器的管理。正因如此,也有小部分人將代碼修改後當作後門程序使用,以達到控制網站伺服器的目的。
4. Web前端賦值運算符的優先順序最低嗎
在一個表達式中可能包含多個有不同運算符連接起來的、具有不同數據類型的數據對象;由於表達式有多種運算,不同的結合順序可能得出不同結果甚至出現錯誤運算錯誤,因為當表達式中含多種運算時,必須按一定順序進行結合,才能保證運算的合理性和結果的正確性、唯一性。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一行中的運算符的優先順序相同。
5. Web前端工程師必會的JavaScript開發小技巧
今天小編要跟大家分享的文章是關於Web前端工程師必會的JavaScript開發小技巧。對於Web開發或跨平台開發,JavaScript越來越流行。以前,它僅被認為是一種前端腳本語言,但現在它也越來越流行為後端腳本語言。甚至Facebook的React
Native也基於JavaScript。因此,了解JavaScript中的一些技巧無疑將是有益的,這些技巧不僅不會阻止我們編寫額外的代碼行,而且還將使我們的代碼清晰高效。下面來和小編一起看一看吧!
1、數組索引考慮一個數組[10、9、8、7、6],如果我們想將此數組的值分配給任何變數,則我們的定位方法將是consta=array
[0]。如果我們想分配多個變數,那麼繼續這樣做將很繁瑣。代碼1:舊代碼做法
輸出:
x=10
y=9
z=8
代碼2:更聰明的方式
輸出:
x=10
y=9
z=8
rest=7,6
因此,像這樣分配多個變數可以節省時間和代碼。但是,應注意,其餘部分是剩餘部分的集合數組,而不是每個項目都單獨使用。
2、定義函數想法是將一些常見或重復的任務放在一起並創建一個函數,這樣我們就可以調用該函數,而不必為不同的輸入一次又一次地編寫相同的代碼。每個人都必須在JavaScript中使用過類似的功能。代碼1:以常規形式定義功能。
UsualfunctioninJavaScript
輸出:
UsualfunctioninJavaScript
12
代碼2:還有另一種方法將函數視為變數,而不是一個非常有用的技巧,但仍然是新事物。將函數保持在變數中,它利用像這樣的箭頭函數。
Functiontreatedas
variableinJavaScript:
輸出:
12
3、在一行中定義功能
現在,這個技巧真的很酷。如果你了解Python,則可能知道lambda函數,該函數的行為與任意函數相同,並且用一行編寫。好吧,我們不在JavaScript中使用lambda函數,但是我們仍然可以編寫單行函數。
假設我們要計算兩個數字a和b的乘積,我們可以在一行腳本中完成。我們不必專門編寫return語句,因為這種定義方式已經意味著它將自行返回輸出。
Functiontreatedas
variableinJavaScript
輸出:
12
4、布爾值
雖然每種編程語言都只有兩個布爾值True和False。JavaScript通過引入使用戶能夠創建bool的功能使它更進一步。
與True和False不同,它們通常分別稱為「Truthy」和「
Falsy」。為避免混淆,除0,False,NaN,null,「」之外的所有值均默認為Truthy。布爾的這種廣泛使用有助於我們有效地檢查狀況。
輸出:
False
True
5、過濾布爾值
有時我們可能希望過濾掉所有布爾值,例如從數組中說「Falsy」
布爾值(0,False,NaN,null,「」),這可以通過結合使用map和filter函數來完成。在這里,它使用Boolean關鍵字過濾掉Falsy值。
Input:[1,2,3,0,"Hi",False,True
]Output:[1,2,3,"Hi",True]
6、創建完全空的對象
如果要求在JavaScript中創建一個空的對象,我們的第一個轉到方法將在花括弧中使用並將其分配給變數。但這不是空白對象,因為它仍然具有JavaScript的對象屬性,例如__proto__和其他方法。
可以通過一種方法來創建沒有任何對象屬性的對象。為此,我們使用字典並將其__proto__定義為空值。
除非用戶另行定義,否則此對象將沒有默認的__proto__或其他屬性。7、截斷數組
輸出:如所見,我們必須知道要以這種方式截斷的數組的長度,否則將導致錯誤。此處的運行時間為O(k),其中k是將在數組中保留的元素數。
[10、5、7、8、3、4]
8、合並對象散布運算符()的引入使用戶可以輕松地合並到一個或多個對象,而先前通過創建一個單獨的函數來實現此操作可以實現合並。
代碼1:
·
代碼2:通過使用擴展運算符,可以輕松實現上述任務,並且代碼也很清楚。
9、條件檢查檢查和遍歷條件是每種編程語言的重要組成部分。在JavaScript中,我們這樣做是:
代碼1:
代碼2:但是,按位運算符的使用使檢查條件更加容易,並且使代碼僅一行:
10、使用正則表達式替換所有字元經常出現一種情況,每次出現一個字元或一個子字元串,但不幸的是.replace()方法僅替換一個出現的實例。我們可以通過將regex與.replace()方法配合使用來解決此問題。
輸出:
「GoolsforGools」
以上就是小編今天為大家分享的關於Web前端工程師必會的JavaScript
開發小技巧的文章,希望本篇文章能夠對正在從事web前端相關工作的小夥伴們有所幫助,想要了解更多web前端相關知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的web前端開發工程師!
文章來源:英文|#/javascript-top-10-tips-and-tricks/?ref=rp翻譯|web前端開發(ID:web_qdkf)
6. Web前端工程師應該知道的JavaScript使用小技巧
今天小編要跟大家分享的文章是關於Web前端工程師應該知道的JavaScript使用小技巧。任何一門技術在實際中都會有一些屬於自己的小技巧。同樣的,在使用JavaScript時也有一些自己的小技巧,只不過很多時候有可能容易被大家忽略。而在互聯網上,時不時的有很多同行朋友會總結(或收集)一些這方面的小技巧。
今天在這篇文章中,小編會整理一些大家熟悉或不熟悉的有關於JavaScript的小技巧,希望能夠對大家的學習和工作有所幫助。
一、數組
先來看使用數組中常用的一些小技巧。
01、數組去重
ES6提供了幾種簡潔的數組去重的方法,但該方法並不適合處理非基本類型的數組。對於基本類型的數組去重,可以使用...new
Set()來過濾掉數組中重復的值,創建一個只有唯一值的新數組。constarray=[1,1,2,3,5,5,1]
constuniqueArray=[...newSet(array)];
console.log(uniqueArray);
>Result:(4)[1,2,3,5]
這是ES6中的新特性,在ES6之前,要實現同樣的效果,我們需要使用更多的代碼。該技巧適用於包含基本類型的數組:undefined、null、boolean、string和number。如果數組中包含了一個object,function或其他數組,那就需要使用另一種方法。
除了上面的方法之外,還可以使用Array.from(newSet())來實現:constarray=[1,1,2,3,5,5,1]
Array.from(newSet(array))
>Result:(4)[1,2,3,5]
另外,還可以使用Array的.filter及indexOf()來實現:
constarray=[1,1,2,3,5,5,1]
array.filter((arr,index)=>array.indexOf(arr)===index)
>Result:(4)[1,2,3,5]
注意,indexOf()方法將返回數組中第一個出現的數組項。這就是為什麼我們可以在每次迭代中將indexOf()方法返回的索引與當索索引進行比較,以確定當前項是否重復。
02、確保數組的長度
在處理網格結構時,如果原始數據每行的長度不相等,就需要重新創建該數據。為了確保每行的數據長度相等,可以使用Array.fill來處理:letarray=Array(5).fill('');
console.log(array);
>Result:(5)["","","","",""]
03、數組映射
不使用Array.map來映射數組值的方法。constarray=[
{
ame:'大漠',
email:'w3cplus@#'
},
{
ame:'Airen',
email:'airen@#'
}
]
constname=Array.from(array,({name})=>name)
>Result:(2)["大漠","Airen"]
04、數組截斷
如果你想從數組末尾刪除值(刪除數組中的最後一項),有比使用splice()更快的替代方法。
例如,你知道原始數組的大小,可以重新定義數組的length屬性的值,就可以實現從數組末尾刪除值:
letarray=[0,1,2,3,4,5,6,7,8,9]
console.log(array.length)
>Result:10
array.length=4
console.log(array)
>Result:(4)[0,1,2,3]
這是一個特別簡潔的解決方案。但是,slice()方法運行更快,性能更好:
letarray=[0,1,2,3,4,5,6,7,8,9];
array=array.slice(0,4);
console.log(array);
>Result:[0,1,2,3]
05、過濾掉數組中的falsy值
如果你想過濾數組中的falsy值,比如0、undefined、null、false,那麼可以通過map和filter方法實現:
constarray=[0,1,Ɔ',Ƈ','大漠','#',undefined,true,false,null,'undefined','null',NaN,'NaN',Ƈ'+0]
array.map(item=>{
returnitem
}).filter(Boolean)
>Result:(10)[1,"0","1","大漠","#",true,"undefined","null","NaN","10"]
06、獲取數組的最後一項
數組的slice()取值為正值時,從數組的開始處截取數組的項,如果取值為負整數時,可以從數組末屬開始獲取數組項。
letarray=[1,2,3,4,5,6,7]
constfirstArrayVal=array.slice(0,1)
>Result:[1]
constlastArrayVal=array.slice(-1)
>Result:[7]
console.log(array.slice(1))
>Result:(6)[2,3,4,5,6,7]
console.log(array.slice(array.length))
>Result:[]
正如上面示例所示,使用array.slice(-1)獲取數組的最後一項,除此之外還可以使用下面的方式來獲取數組的最後一項:
console.log(array.slice(array.length-1))
>Result:[7]
07、過濾並排序字元串列表
你可能有一個很多名字組成的列表,需要過濾掉重復的名字並按字母表將其排序。
在我們的例子里准備用不同版本語言的JavaScript
保留字的列表,但是你能發現,有很多重復的關鍵字而且它們並沒有按字母表順序排列。所以這是一個完美的字元串列表(數組)來測試我們的JavaScript小知識。
varkeywords=['do','if','in','for','new','try','var','case','else','enum','null','this','true','void','with','break','catch','class','const','false','super','throw','while','delete','export','import','return','switch','typeof','default','extends','finally','continue','debugger','function','do','if','in','for','int','new','try','var','byte','case','char','else','enum','goto','long','null','this','true','void','with','break','catch','class','const','false','final','float','short','super','throw','while','delete','double','export','import','native','public','return','static','switch','throws','typeof','boolean','default','extends','finally','package','private','abstract','continue','debugger','function','volatile','interface','protected','transient','implements','instanceof','synchronized','do','if','in','for','let','new','try','var','case','else','enum','eval','null','this','true','void','with','break','catch','class','const','false','super','throw','while','yield','delete','export','import','public','return','static','switch','typeof','default','extends','finally','package','private','continue','debugger','function','arguments','interface','protected','implements','instanceof','do','if','in','for','let','new','try','var','case','else','enum','eval','null','this','true','void','with','await','break','catch','class','const','false','super','throw','while','yield','delete','export','import','public','return','static','switch','typeof','default','extends','finally','package','private','continue','debugger','function','arguments','interface','protected','implements','instanceof'];
因為我們不想改變我們的原始列表,所以我們准備用高階函數叫做filter,它將基於我們傳遞的回調方法返回一個新的過濾後的數組。回調方法將比較當前關鍵字在原始列表裡的索引和新列表中的索引,僅當索引匹配時將當前關鍵字push到新數組。
最後我們准備使用sort方法排序過濾後的列表,sort只接受一個比較方法作為參數,並返回按字母表排序後的列表。
在ES6下使用箭頭函數看起來更簡單:
=keywords
.filter((keyword,index)=>keywords.lastIndexOf(keyword)===index)
.sort((a,b)=>a
這是最後過濾和排序後的JavaScript保留字列表:
console.log(filteredAndSortedKeywords);
>Result:['abstract','arguments','await','boolean','break','byte','case','catch','char','class','const','continue','debugger','default','delete','do','double','else','enum','eval','export','extends','false','final','finally','float','for','function','goto','if','implements','import','in','instanceof','int','interface','let','long','native','new','null','package','private','protected','public','return','short','static','super','switch','synchronized','this','throw','throws','transient','true','try','typeof','var','void','volatile','while','with','yield']
08、清空數組
如果你定義了一個數組,然後你想清空它。通常,你會這樣做:
letarray=[1,2,3,4];
functionemptyArray(){
array=[];
}
emptyArray();
但是,這有一個效率更高的方法來清空數組。你可以這樣寫:
letarray=[1,2,3,4];
functionemptyArray(){
array.length=0;
}
emptyArray();
09、拍平多維數組
使用...運算符,將多維數組拍平:
10、從數組中獲取最大值和最小值
可以使用Math.max和Math.min取出數組中的最大小值和最小值:
constnumbers=[15,80,-9,90,-99]
constmaxInNumbers=Math.max.apply(Math,numbers)
constminInNumbers=Math.min.apply(Math,numbers)
console.log(maxInNumbers)
>Result:90
console.log(minInNumbers)
>Result:-99
另外還可以使用ES6的...運算符來完成:
constnumbers=[1,2,3,4];
Math.max(...numbers)
>Result:4
Math.min(...numbers)
>>Result:1
二、對象
在操作對象時也有一些小技巧。
01、使用...運算符合並對象或數組中的對象
同樣使用ES的...運算符可以替代人工操作,合並對象或者合並數組中的對象。
//合並對象
constobj1={
ame:'大漠',
url:'#'
}
constobj2={
ame:'airen',
age:30
}
constmergingObj={...obj1,...obj2}
>Result:{name:"airen",url:"#",age:30}
//合並數組中的對象
constarray=[
{
ame:'大漠',
email:'w3cplus@#'
},
{
ame:'Airen',
email:'airen@#'
}
]
constresult=array.rece((accumulator,item)=>{
return{
...accumulator,
[item.name]:item.email
}
},{})
>Result:{大漠:"w3cplus@#",Airen:"airen@#"}
02、有條件的添加對象屬性
不再需要根據一個條件創建兩個不同的對象,以使它具有特定的屬性。為此,使用...操作符是最簡單的。
constgetUser=(emailIncluded)=>{
return{
ame:'大漠',
blog:'w3cplus',
...emailIncluded&&{email:'w3cplus@#'}
}
}
constuser=getUser(true)
console.log(user)
>Result:{name:"大漠",blog:"w3cplus",email:"w3cplus@#"}
constuserWithoutEmail=getUser(false)
console.log(userWithoutEmail)
>Result:{name:"大漠",blog:"w3cplus"}
03、解構原始數據
你可以在使用數據的時候,把所有數據都放在一個對象中。同時想在這個數據對象中獲取自己想要的數據。
在這里可以使用ES6的Destructuring特性來實現。比如你想把下面這個obj中的數據分成兩個部分:
constobj={
ame:'大漠',
blog:'w3cplus',
email:'w3cplus@#',
joined:-06-19',
followers:45
}
letuser={},userDetails={}
({name:user.name,email:user.email,...userDetails}=obj)
>{name:"大漠",blog:"w3cplus",email:"w3cplus@#",joined:"2019-06-19",followers:45}
console.log(user)
>Result:{name:"大漠",email:"w3cplus@#"}
console.log(userDetails)
>Result:{blog:"w3cplus",joined:"2019-06-19",followers:45}
04、動態更改對象的key
在過去,我們首先必須聲明一個對象,然後在需要動態屬性名的情況下分配一個屬性。在以前,這是不可能以聲明的方式實現的。不過在ES6中,我們可以實現:
constdynamicKey='email'
letobj={
ame:'大漠',
blog:'w3cplus',
[dynamicKey]:'w3cplus@#'
}
console.log(obj)
>Result:{name:"大漠",blog:"w3cplus",email:"w3cplus@#"}
05、判斷對象的數據類型
使用Object.prototype.toString配合閉包來實現對象數據類型的判斷:
constisType=type=>target=>`[object${type}]`===Object.prototype.toString.call(target)
constisArray=isType('Array')([1,2,3])
console.log(isArray)
>Result:true
上面的代碼相當於:
functionisType(type){
returnfunction(target){
return`[object${type}]`===Object.prototype.toString.call(target)
}
}
isType('Array')([1,2,3])
>Result:true
或者:
constisType=type=>target=>`[object${type}]`===Object.prototype.toString.call(target)
constisString=isType('String')
constres=isString((Ƈ'))
console.log(res)
>Result:true
06、檢查某對象是否有某屬性
當你需要檢查某屬性是否存在於一個對象,你可能會這樣做:
varobj={
ame:'大漠'
}
if(obj.name){
console.l
7. Web前端初學者要知道的JavaScript技巧
今天小編要跟大家分享的文章是關於Web前端初學者要知道的JavaScript技巧。本篇文章小編為大家准備了一些JavaScript的編程技巧。熟悉Web前端工作的小夥伴都知道JavaScript的重要性。這篇文章是為初學者准備的,但我希望即使是中級JavaScript開發人員也能在這個列表中找到一些新的東西。下面我們一起來看一看吧!
1、...過濾唯一值
Set對象類型是在ES6中引入的,配合展開操作...一起,我們可以使用它來創建一個新數組,該數組只有唯一的值。constarray=[1,1,2,3,5,5,1]
constuniqueArray=[...newSet(array)];
console.log(uniqueArray);//Result:[1,2,3,5]
在ES6之前,隔離惟一值將涉及比這多得多的代碼。
此技巧適用於包含基本類型的數組:undefined,null,boolean,string和number。
(如果你有一個包含對象,函數或其他數組的數組,你需要一個不同的方法!)
2、與或運算
三元運算符是編寫簡單(有時不那麼簡單)條件語句的快速方法,如下所示:x>100?'Above100':'Below100'
x>100?(x>200?'Above200':'Between100-200'):'Below100'
但有時使用三元運算符處理也會很復雜。相反,我們可以使用'與'&&和'或'||邏輯運算符以更簡潔的方式書寫表達式。
這通常被稱為「短路」或「短路運算」。
它是怎麼工作的
假設我們只想返回兩個或多個選項中的一個。
使用&&將返回第一個條件為假的值。如果每個操作數的計算值都為true,則返回最後一個計算過的表達式。letone=1,two=2,three=3;
console.log(one&&two&&three);//Result:3
console.log(0&&null);//Result:0
使用||將返回第一個條件為真的值。如果每個操作數的計算結果都為false,則返回最後一個計算過的表達式。letone=1,two=2,three=3;
console.log(one||two||three);//Result:1
console.log(0||null);//Result:null
例一
假設我們想返回一個變數的長度,但是我們不知道變數的類型。
我們可以使用if/else語句來檢查foo是可接受的類型,但是這可能會變得非常冗長。或運行可以幫助我們簡化操作:
return(foo||[]).length
如果變數foo是true,它將被返回。否則,將返回空數組的長度:0。
例二
你是否遇到過訪問嵌套對象屬性的問題?你可能不知道對象或其中一個子屬性是否存在,這可能會導致令人沮喪的錯誤。
假設我們想在this.state中訪問一個名為data的屬性,但是在我們的程序成功返回一個獲取請求之前,data是未定義的。
根據我們使用它的位置,調用this.state.data可能會阻止我們的應用程序運行。為了解決這個問題,我們可以將其做進一步的判斷:if(this.state.data){
returnthis.state.data;
}else{return'FetchingData'
}
但這似乎很重復。'或'運算符提供了更簡潔的解決方案:
return(this.state.data||'FetchingData');
一個新特性:OptionalChaining
過去在Object屬性鏈的調用中,很容易因為某個屬性不存在而導致之後出現Cannotreadpropertyxxx
ofundefined的錯誤。
那optionalchaining就是添加了?.這么個操作符,它會先判斷前面的值,如果是null或undefined,就結束調用、返回
undefined。
例如,我們可以將上面的示例重構為this.state.data?.()。或者,如果我們主要關注state是否已定義,我們可以返回
this.state?.data。
該提案目前處於第1階段,作為一項實驗性功能。你可以在這里閱讀它,你現在可以通過Babel使用你的JavaScript,將
@babel/plugin-proposal-optional-chaining添加到你的.babelrc文件中。
3、轉換為布爾值
除了常規的布爾值true和false之外,JavaScript還將所有其他值視為『truthy』或『falsy』。
除非另有定義,否則JavaScript中的所有值都是'truthy',除了0,「」,null,undefined,NaN,當然還有
false,這些都是'falsy'
我們可以通過使用負算運算符輕松地在true和false之間切換。它也會將類型轉換為「boolean」。constisTrue=!0;
constisFalse=!1;
constalsoFalse=!!0;
console.log(isTrue);//Result:true
console.log(typeoftrue);//Result:"boolean"
4、轉換為字元串
要快速地將數字轉換為字元串,我們可以使用連接運算符+後跟一組空引號""。
constval=1+"";
console.log(val);//Result:"1"
console.log(typeofval);//Result:"string"
5、轉換為數字
使用加法運算符+可以快速實現相反的效果。
letint="15";int=+int;
console.log(int);//Result:15
console.log(typeofint);Result:"number"
這也可以用於將布爾值轉換為數字,如下所示
console.log(+true);//Return:1
console.log(+false);//Return:0
在某些上下文中,+將被解釋為連接操作符,而不是加法操作符。當這種情況發生時(你希望返回一個整數,而不是浮點數),您可以使用兩個波浪號:
~~。
連續使用兩個波浪有效地否定了操作,因為—_(_—_n_—_1)_—_1=n+1_—_1=n。換句話說,~—16等於15。
constint=~~"15"console.log(int);//Result:15
console.log(typeofint);
Result:"number"
雖然我想不出很多用例,但是按位NOT運算符也可以用在布爾值上:~true=-2和~false=-1。
6、性能更好的運算
從ES7開始,可以使用指數運算符**作為冪的簡寫,這比編寫Math.pow(2,3)更快。
這是很簡單的東西,但它之所以出現在列表中,是因為沒有多少教程更新過這個操作符。
console.log(2**3);//Result:8
這不應該與通常用於表示指數的^符號相混淆,但在JavaScript中它是按位異或運算符。
在ES7之前,只有以2為基數的冪才存在簡寫,使用按位左移操作符<<
Math.pow(2,n);
2<<(n-1);2**n;
例如,2<<3=16等於2**4=16。
7、快速浮點數轉整數
如果希望將浮點數轉換為整數,可以使用Math.floor()、Math.ceil()或Math.round()。但是還有一種更快的方法可以使用
|(位或運算符)將浮點數截斷為整數。
console.log(23.9|0);//Result:23
console.log(-23.9|0);//Result:-23
|的行為取決於處理的是正數還是負數,所以最好只在確定的情況下使用這個快捷方式。
如果n為正,則n|0有效地向下舍入。如果n為負數,則有效地向上舍入。
更准確地說,此操作將刪除小數點後面的任何內容,將浮點數截斷為整數。
你可以使用
~~來獲得相同的舍入效果,如上所述,實際上任何位操作符都會強制浮點數為整數。這些特殊操作之所以有效,是因為一旦強制為整數,值就保持不變。
刪除最後一個數字
按位或運算符還可以用於從整數的末尾刪除任意數量的數字。這意味著我們不需要使用這樣的代碼來在類型之間進行轉換。
letstr="1553";
Number(str.substring(0,str.length-1));
相反,按位或運算符可以這樣寫:
console.log(1553/10|0)//Result:155
console.log(1553/100|0)//Result:15
console.log(1553/1000|0)//Result:1
8、類中的自動綁定
我們可以在類方法中使用ES6箭頭表示法,並且通過這樣做可以隱含綁定。這通常會在我們的類構造函數中保存幾行代碼,我們可以愉快地告別重復的表達式,例如
this.myMethod=this.myMethod.bind(this)
importReact,{Component}fromReact;
{
constructor(props){
super(props);
this.state={};
}
myMethod=()=>{
//Thismethodisboundimplicitly!}
render(){
return(
<>
{this.myMethod()}
8. Web前端工程師要掌握的CSS技巧
今天小編要跟大家分享的文章是關於Web前端工程師要掌握的CSS技巧。正在從事web前端工作的小夥伴們快來和小編一起看一看吧,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助。
1、元素的margin的top、bottom及padding的top、bottom使用百分比作為單位時,其是相對父元素的寬度width的而不是我們想像的高度height;舉個例子:
其實出現這種現象,我們可以巧用margin/padding的百分比值實現高度自適應(多用於佔位,避免閃爍)當然該元素高度上的百分比是相對其父元素高度的百分比的,min-height及max-height也適用這條規律。
2、含有定位屬性的元素,其top、bottom單位為百分比時,該百分比是相對於父元素的高度的。同理,left、right則是相對於父元素的寬度的。
這一點,我昨天在查資料寫這篇文章—最全面的元素水平垂直居中方法匯總的時候就發現有個大牛也理解錯了—-CSS布局奇淫技巧之_各種居中裡面的第八點。3、邊框寬度不允許使用百分比值這點就不解釋了。4、width:100%當父容器里有絕對定位的子元素時,子元素設置width:100%實際上指的是相對於父容器的padding+content的寬度。當子元素是非絕對定位的元素時width:100%才是指子元素的content,其等於父元素的content寬度。
將上面子元素的position改成了relative後,其寬度就變成了parent寬度。
5、line-height你知道line-height:150%和line-height:1.5的區別嗎?知道了就可以跳過此處,不知道繼續看下面:舉個例子:
上面可以看到line-height有單位時,子元素是繼承父元素的line-height的,無單位時,其line-height等於無單位的數值乘以子元素本身的字體大小。顯然為了不出現意外,還是建議首選無單位的。6、ex和ch單位ex:取當前作用效果的字體的x的高度,在無法確定x高度的情況下以0.5em計算;ch:以節點所使用字體中的「0」字元為基準,找不到時為0.5em;
ex和ch單位,類似於em和rem,依賴於當前的字體和字體大小。但是,不同的是,這兩貨是基於字體的度量單位,依賴於設定的字體。ch單位通常被定義為數字0的寬度。你可以在EricMeyers的博客里找到關於它的一些有意思的討論,例如將一個等寬字體的字母」N」的寬度設置為40ch,那麼在另一種類型的字體里它卻可以包含40個字母。這個單位的傳統用途主要是盲文的排版,但是除此之外,肯定還有可以應用他的地方。ex定義為當前字體的小寫x字母的高度或者1/2的1em。很多時候,它是字體的中間標志。
x-height;theheightofthelowercasex這些單位有很多用途,大部分用於版式的微調。比方說,sup元素(上角文字標),可以通過position:relative;bottom:
1ex;實現。類似的方法,你可以實現一個下角文字標。瀏覽器默認的方式是利用上標和下標特定垂直對齊規則,但是如果你想更細粒度更精確得控制,你可以像下面這樣做:Css代碼
7、使用calc時運算符之間要有空格,否則可能無效。
以上就是小編今天為大家分享的關於Web前端工程師要掌握的CSS技巧的文章,希望本篇文章能對正在從事web前端相關工作的小夥伴們有所幫助。想要了解更多web前端相關知識記得關注北大青鳥web培訓官網。最後祝願小夥伴們工作順利!
9. 【Web前端基礎】算數運算符是什麼意思
算術運算符的運算數必須是數字類型。算術運算符不能用在布爾類型上,但是可以用在char類型上,因為實質上在Java中,char類型是int類型的一個子集。
10. Web前端工程師要掌握的JavaScript小技巧分享
今天小編要跟大家分享的文章是關於Web前端工程師要掌握的JavaScript小技巧分享。正在從事web前端工作和學習的小夥伴們來和小編一起看一看吧,希望能夠對大家有所幫助。
1.全部替換
我們知道string.replace()函數僅替換第一次出現的情況。
你可以通過在正則表達式的末尾添加/g來替換所有出現的內容。
varexample="potatopotato";
console.log(example.replace(/pot/,"tom"));
//"tomatopotato"
console.log(example.replace(/pot/g,"tom"));
//"tomatotomato"
2.提取唯一值
通過使用Set對象和展開運算符,我們可以創建一個具有唯一值的新數組。
varentries=[1,2,2,3,4,5,6,6,7,7,8,4,2,1]
varunique_entries=[...newSet(entries)];
console.log(unique_entries);
//[1,2,3,4,5,6,7,8]
3.將數字轉換為字元串
我們只需要使用帶空引號的串聯運算符。
varconverted_number=5+"";
console.log(converted_number);
//5
console.log(typeofconverted_number);
4.將字元串轉換為數字
我們需要的只是+運算符。
請注意它僅適用於「字元串數字」。
the_string="123";
console.log(+the_string);
//123
the_string="hello";
console.log(+the_string);
//NaN
5.隨機排列數組中的元素
我每天都在這樣做
varmy_list=[1,2,3,4,5,6,7,8,9];
console.log(my_list.sort(function(){
returnMath.random()-0.5
}));
//[4,8,2,9,1,3,6,5,7]
6.展平多維數組
只需使用展開運算符。
varentries=[1,[2,5],[6,7],9];
varflat_entries=[].concat(...entries);
//[1,2,5,6,7,9]
7.縮短條件語句
讓我們來看這個例子:
if(available){addToCart();}
通過簡單地使用變數和函數來縮短它:
available&&addToCart()
8.動態屬性名
我一直以為必須先聲明一個對象,然後才能分配動態屬性。
constdynamic='flavour'
varitem={
name:'Coke',
[dynamic]:'Cherry'
}
console.log(item);
//{name:"Coke",flavour:"Cherry"}
9.使用length調整/清空數組
我們基本上覆蓋了數組的length。
如果我們要調整數組的大小:
varentries=[1,2,3,4,5,6,7];
console.log(entries.length);
//7
entries.length=4;
console.log(entries.length);
//4
console.log(entries);
//[1,2,3,4]
如果我們要清空數組:
varentries=[1,2,3,4,5,6,7];
console.log(entries.length);
//7
entries.length=0;
console.log(entries.length);
//0
console.log(entries);
//[]
以上就是小編今天為大家分享的關於Web前端工程師要掌握的JavaScript小技巧分享的文章,希望本篇文章能夠對正在從事web前端工作和學習的小夥伴們有所幫助,想要了解更多web前端知識記得關注北大青鳥web培訓官網。最後祝願小夥伴們工作順利成為一名優秀的web前端工程師。