js的小括號(hào)、中括號(hào)和大括號(hào)

2020-09-17 16:47 更新

正則表達(dá)式的() [] {}有不同的意思,() 是為了提取匹配的字符串。表達(dá)式中有幾個(gè)()就有幾個(gè)相應(yīng)的匹配字符串。

(\s*)表示連續(xù)空格的字符串。[]是定義匹配的字符范圍。

比如 [a-zA-Z0-9] 表示相應(yīng)位置的字符要匹配英文字符和數(shù)字。

[\s*]表示空格或者*號(hào)。{}一般用來表示匹配的長(zhǎng)度,比如 \s{3} 表示匹配三個(gè)空格,\s[1,3]表示匹配一到三個(gè)空格。

(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配數(shù)字(注意后面有 *,可以為空)[0-9]+ 匹配數(shù)字(注意后面有 +,不可以為空){1-9} 寫法錯(cuò)誤。

[0-9]{0,9} 表示長(zhǎng)度為 0 到 9 的數(shù)字字符串。

例如:在PHP中過濾內(nèi)容里面有數(shù)字或空格數(shù)字

代碼如下:
preg_replace("/\d{1,}\s{0,1}/", "xxxxxxxx", $signaturecontent);

JavaScript正則表達(dá)式在線測(cè)試工具:http://tools.jb51.net/regex/javascript


一、js中小括號(hào)()的用法詳解


1、作為分組運(yùn)算符:

分組運(yùn)算符應(yīng)該是再熟悉不過了,因?yàn)樵谛W(xué)數(shù)學(xué)中就有應(yīng)用,例如:

var a=(1+2)*4;
console.log(a);
以上代碼的輸出值是12,因?yàn)榉纸M運(yùn)算符可以改變運(yùn)算符的優(yōu)先級(jí),否則的話輸出值是9。
擴(kuò)展說明:
1.很多教程說它是一個(gè)強(qiáng)制運(yùn)算符,其實(shí)在ECMAScript中,根本就沒有強(qiáng)制運(yùn)算符這么一個(gè)概念,它就是普通分組運(yùn)算符。
2.這也是為什么eval()函數(shù)將json格式字符串轉(zhuǎn)換為對(duì)象需再嵌套一個(gè)小括號(hào)的原因,可以參閱使用eval()將json字符串轉(zhuǎn)換為對(duì)象要多加一個(gè)小括號(hào)一章節(jié)。 


2、函數(shù)聲明和函數(shù)調(diào)用參數(shù)列表:
在聲明函數(shù)或者調(diào)動(dòng)函數(shù)的時(shí)候,如果有參數(shù),那么就會(huì)將參數(shù)放在小括號(hào)之中,代碼如下:

function func(a,b){
  //代碼
}
func(1,2);


3、與特定關(guān)鍵字形成特定語句:
小括號(hào)可以與特定的關(guān)鍵詞形成特定的語句,代碼如下:

if(a>1){
  //代碼
}
while(i<len){
  //代碼
}
for(var i=0;i<len;i++){
  //代碼
}


4、表達(dá)式方式函數(shù)聲明和立即調(diào)用函數(shù)表達(dá)式:
創(chuàng)建一個(gè)函數(shù)除了函數(shù)聲明方式聲明之外,還可以使用表達(dá)式方式,代碼如下:

function func(){
  //代碼
}
var func=function(){
  //代碼
}


第二種就是表達(dá)式方式聲明一個(gè)函數(shù)。下面介紹一下函數(shù)聲明和表達(dá)式方式的區(qū)別:
函數(shù)聲明必須帶有標(biāo)識(shí)符,也就是函數(shù)名,但是函數(shù)表達(dá)式方式,標(biāo)識(shí)符帶不帶都可以。

function 函數(shù)名稱 (參數(shù):可選){ 函數(shù)體 }//函數(shù)聲明方式
function 函數(shù)名稱(可選)(參數(shù):可選){ 函數(shù)體 }//函數(shù)表達(dá)式方式


要區(qū)分一個(gè)代碼是函數(shù)聲明還是函數(shù)表達(dá)式,那要看代碼的應(yīng)用上下文,例如:

function func(){};//函數(shù)聲明方式
(function func(){})//函數(shù)表達(dá)式方式
出現(xiàn)在運(yùn)算符相關(guān)上下文中,那么它就是一個(gè)表達(dá)式,例如下面最常見的代碼:

1
var func=function(){}


上面介紹一下什么是函數(shù)表達(dá)式,下面就看一下如何立即調(diào)用函數(shù)表達(dá)式:

(function(){})();
(function(){}());
!function(){}();


上面三個(gè)語句都是在運(yùn)算符相關(guān)上下文中,所以都是表達(dá)式,就可以強(qiáng)制調(diào)用了,下面做一下分析:
1.(function(){})(),(function(){})是一個(gè)表達(dá)式,會(huì)強(qiáng)制其理解成函數(shù)直接量方式,也就是表達(dá)式方式創(chuàng)建函數(shù),(function(){})它會(huì)返回函數(shù)對(duì)象的引用,最后使用小括號(hào)()調(diào)用此函數(shù)。


2.(function(){}()),如果不用外面包裹的小括號(hào),{}就會(huì)理解為復(fù)合語句,那么function(){}就被理解為函數(shù)聲明,但是沒有標(biāo)識(shí)符,所以會(huì)報(bào)錯(cuò),使用小括號(hào)以后,就會(huì)變成表達(dá)式,也會(huì)被理解為直接量方式。


3.!function(){}(),原理同上,!也是一個(gè)運(yùn)算符,所以在原理同上。


二、{ } 大括號(hào),表示定義一個(gè)對(duì)象,大部分情況下要有成對(duì)的屬性和值,或是函數(shù)。 
如:var LangShen = {"Name":"Langshen","AGE":"28"}; 
上面聲明了一個(gè)名為“LangShen”的對(duì)象,多個(gè)屬性或函數(shù)用,(逗號(hào))隔開,因?yàn)槭菍?duì)象的屬性, 
所以訪問時(shí),應(yīng)該用.(點(diǎn))來層層訪問:LangShen.Name、LangShen.AGE,當(dāng)然我們也可以用數(shù)組的方式來訪問,如:LangShen["Name"]、LangShen["AGE"],結(jié)果是一樣的。 


該寫法,在JSON數(shù)據(jù)結(jié)構(gòu)中經(jīng)常用,除此之外,我們平時(shí)寫函數(shù)組的時(shí)候,也經(jīng)常用到,如: 

代碼如下:

var LangShen = { 
Name = function(){ 
return "LangShen"; 
}, 
Age = function(){ 
return "28"; 



調(diào)用方式差不多,因?yàn)槭呛瘮?shù)組,所以要加上(),如:alert( LangShen.Name() ); 


三、[ ]中括號(hào),表示一個(gè)數(shù)組,也可以理解為一個(gè)數(shù)組對(duì)象。 
如:var LangShen = [ "Name","LangShen","AGE","28" ]; 
很明顯,每個(gè)值或函數(shù),都是獨(dú)立的,多個(gè)值之間只用,(逗號(hào))隔開,因?yàn)槭菙?shù)組對(duì)象,所以它等于: 
var LangShen = Array( "Name","LangShen","AGE","28" ); 
訪問時(shí),也是和數(shù)組一樣,alert( LangShen[0] ); 


四、{ } 和[ ] 一起使用,我們前面說到,{ } 是一個(gè)對(duì)象,[ ] 是一個(gè)數(shù)組,我們可以組成一個(gè)對(duì)象數(shù)組,如: 

代碼如下:

var LangShen = { "Name":"Langshen", 
"MyWife":[ "LuLu","26" ], 
"MySon":[{"Name":"Son1"},{"Name":"Son2"},{"Name":"Son3"}] 


從上面的結(jié)構(gòu)來看,是一個(gè)對(duì)象里面的第一項(xiàng)是個(gè)屬性,第二項(xiàng)是一個(gè)數(shù)組,第三個(gè)是包含有多個(gè)對(duì)象的數(shù)組。調(diào)用起來,也是一層一層訪問,對(duì)象的屬性用.(點(diǎn))疊加,數(shù)組用 [下標(biāo)] 來訪問。 


如:alert( LangShen.MySon[1].Name ) ;



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)