JavaScript-02

運算符和表達式

運算符總共

算術運算:+ - * / % ++ --
關系運算:> < >= <= == === != !===
邏輯運算:&& || !
賦值運算:= += -= *= /= %=
字符連接運算符: +
條件(三目)運算: ?:
特殊運算符: typeof instanceof void delete

算術運算

加+ 減- 乘* 除/ 取余%

注:-除了表示減也可以表示符號, +除了表示加可表示字符串的連接

  • 使用%運算符
    %取余運算
var i=10%3;         // 值為1
var i=10.5%3;       // 值為1.5
var -10%3;          //  值為-1
var i=10%-3;        // 值為1
var i=-10%-3;       // 值為-1
  • 使用"++"和"--"運算符
    ++自增運算描姚,增量為1
    ++在后:先使用變量的值争剿,再對變量進行自增
    ++在前:先對變量進行自增操作,再使用變量的值

關系運算

關系運算用于表示判斷數(shù)據(jù)之間的大小關系(關系表達式的值為boolean類型)

>大于 <小于 >=大于等于 <=小于等于 ==是否等于 !=是否不等于

注意:
1.== 纪吮,!=只判斷數(shù)值是否相等,與類型無關;
2.全等===不僅數(shù)值想等,類型還要相同,不全等!==

邏輯運算

作用:判斷多條件以及條件取反時的作用

邏輯與&&

兩邊為真才為真

邏輯或||

有一邊為真就是真

邏輯非!

真變假,假變真

當作假看待的數(shù)值:
0磨镶、0.0邪蛔、undefined急黎、NaN扎狱、null、空

關于"短路邏輯"的問題
對于&&
左邊為假,后面就不用看了,結果是假
對于||
左邊是真,后面就不用看了,結果是真

賦值運算

使用"="進行賦值問題,=用于為變量賦值
使用擴展賦值表達式,+= -= *= /= %=,具體不做解釋
在絕大多數(shù)變成語言中,a+=3由于運行時可以進行優(yōu)化,執(zhí)行效率會優(yōu)于a=a+3

字符連接運算

+作用于兩個數(shù)字時,表示算術運算勃教;+作用于字符串時,表示字符串拼接運算

條件(三目)運算

表達式1?表達式2:表達式3(其中表達式1的值應該是一個loobean類型);

若表達式1為true,則整個表達式的值為表達式2的值
若表達式1為flase,則整個表達式的值為表達式3的值

函數(shù)(方法)

函數(shù)的定義

  • 什么是函數(shù)(方法,過程)
    函數(shù)(Founction)有時也被稱為方法(Method),或者過程(Procedure)淤击。函數(shù)是一端預定義好,并可以被反復使用的代碼塊。其中可以包含多條可執(zhí)行語句故源,函數(shù)實際上是功能完整的對象污抬。

  • 定義函數(shù)
    1.使用關鍵字founction定義一個函數(shù)
    2.函數(shù)名的定義與標識符一致,大小寫敏感
    語法:

founction 函數(shù)名(){
   可執(zhí)行語句;
}
  • 函數(shù)調(diào)用
    允許出現(xiàn)JS腳本的地方都可以實現(xiàn)”函數(shù)調(diào)用“
    語法:函數(shù)名()
    例如:
parseInt();
parseFloat();
Number();
console.log();
  • 定義帶參函數(shù)
    聲明執(zhí)行參數(shù)或者使用return關鍵字聲明方法的返回值
    定義帶參函數(shù)的語法:
function 函數(shù)名(參數(shù)列表){
    可執(zhí)行語句;
}

例如:

founction add(num1,num2,num3){
  var sum=num1+num2+num3;
  return sum;
}

注:多個參數(shù)使用逗號進行分隔,定義時的參數(shù)绳军,稱之為”形參“
return語句執(zhí)行后,此方法就退出執(zhí)行了,故執(zhí)行return方法后不再執(zhí)行其他語句印机。

  • 帶參函數(shù)的調(diào)用
    語法:函數(shù)名(參數(shù)列表)
    參數(shù)列表:由一個或多個值組成门驾,按照定義好的順序射赛,往里傳遞。調(diào)用函數(shù)時所傳遞的參數(shù)值奶是,稱之為”實參“
    例如:
founction printInfo(userName,userPwd){
   console.log('用戶名:'+userName+'密碼:'+usePwd);
}

調(diào)用1:printInfo('Tom','123');
調(diào)用2:var name='Mary';var pwd='456';printInfo(name,pwd);

  • 帶返回值的函數(shù)
    語法:
function 函數(shù)名([參數(shù)列表]){
代碼塊楣责;
return 值/表達式;
}

return:返回
1.將指定的值或者表達式帶出到函數(shù)調(diào)用的位置處
2.并終止當前函數(shù)的執(zhí)行

變量的作用域

什么是作用域聂沙?作用域就是變量與函數(shù)可訪問的范圍,它控制著變量的函數(shù)的可見性和生命周期

在JavaScript中,對象的作用域分為:
1.局部作用域,只在固定的代碼片段中可訪問到
2.全局作用域,一經(jīng)定義,在代碼中任何地方都可以訪問到

  • 局部變量
    局部變量一般只在固定的代碼片段內(nèi)可訪問到,如某個函數(shù)的內(nèi)部,離開此范圍就無法訪問了
function add(){
  var sum=1+2;      //局部變量
  console.log(sum); //正確訪問
}
console.log(sum);   //腳本錯誤
  • 全局變量
    全局變量在代碼的任意位置都可以訪問到
    1.在最外層定義的變量是全局變量
var sum=0;          //全局變量
function add(){
 sum=1+2;
 console.log(sum);   //正確
}
console.log(sum);     //正確

2.未使用var聲明的變量是全局變量

founction add(){
 sum=1+2;           //全局變量
}
add();                    //必須調(diào)用一次
console.log(sum);    //正確

注意:全局變量和局部全量沖突時秆麸,優(yōu)先使用的是局部變量

  • 聲明提前
    JS程序在正式執(zhí)行前,會將所有的var聲明變量和function的聲明函數(shù)及汉,預讀到所在作用域的頂部
    但是沮趣,對變量的賦值依然會保留在原來的位置上

  • 按值傳遞
    基本數(shù)據(jù)類型在做參數(shù)傳遞時,實際上的數(shù)據(jù)進行復制得到一個副本坷随,將副本傳遞到函數(shù)參數(shù)中

  • 函數(shù)的作用域
    與變量類似,函數(shù)也有全局函數(shù)和局部函數(shù)
    1.在最外層定義的函數(shù)是全局函數(shù)

function add(num1,num2){   //全局函數(shù)
 console.log(num1+num2);
}
add(1,2);  //正確

2.在一個函數(shù)內(nèi)部定義的函數(shù)是局部函數(shù)

function outer(){           //全局函數(shù)
   function inner(){        //局部函數(shù)
      console.log("inner";)
  }
}
inner();   //腳本錯誤

遞歸方法

在一個方法體內(nèi)調(diào)用了該方法自身,稱為"方法的遞歸調(diào)用"
例子:

function printNumber(){
   if(num>0){
         console.log(num);
         printNumber(--num);
    }
}

全局函數(shù)

  • 全局函數(shù)概述
    ECMAScript中預定了一組全局函數(shù)可供用戶使用的
    decodeURI()
    decodeURIComponent()
    encodeURI()
    eval()
    isFinite()
    isNaN()
    parseFloat()
    parseInt()
    
  • encodeURI與decodeURI

encodeURI()函數(shù)用于對統(tǒng)一資源標識符(URI)進行編碼,返回編碼后的URI字符串
decodeURI()函數(shù)用于對使用encodeURI()編碼之后的字符串進行解碼

  • eval函數(shù)

eval函數(shù)用于執(zhí)行string形式出現(xiàn)的JavaScript代碼,
使用此函數(shù)使JS可執(zhí)行動態(tài)的JavaScript源代碼
eval()函數(shù)也可以用于將JSON字符串解析為JavaScript對象

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末房铭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甸箱,更是在濱河造成了極大的恐慌育叁,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芍殖,死亡現(xiàn)場離奇詭異豪嗽,居然都是意外死亡,警方通過查閱死者的電腦和手機豌骏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門龟梦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窃躲,你說我怎么就攤上這事计贰。” “怎么了蒂窒?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵躁倒,是天一觀的道長荞怒。 經(jīng)常有香客問我,道長秧秉,這世上最難降的妖魔是什么褐桌? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮象迎,結果婚禮上荧嵌,老公的妹妹穿的比我還像新娘。我一直安慰自己砾淌,他們只是感情好啦撮,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汪厨,像睡著了一般赃春。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上劫乱,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天聘鳞,我揣著相機與錄音,去河邊找鬼要拂。 笑死,一個胖子當著我的面吹牛站楚,可吹牛的內(nèi)容都是我干的脱惰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窿春,長吁一口氣:“原來是場噩夢啊……” “哼拉一!你這毒婦竟也來了?” 一聲冷哼從身側響起旧乞,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蔚润,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后尺栖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫡纠,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年延赌,在試婚紗的時候發(fā)現(xiàn)自己被綠了除盏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡挫以,死狀恐怖者蠕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掐松,我是刑警寧澤踱侣,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布粪小,位于F島的核電站,受9級特大地震影響抡句,放射性物質(zhì)發(fā)生泄漏探膊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一玉转、第九天 我趴在偏房一處隱蔽的房頂上張望突想。 院中可真熱鬧,春花似錦究抓、人聲如沸猾担。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绑嘹。三九已至,卻和暖如春橘茉,著一層夾襖步出監(jiān)牢的瞬間工腋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工畅卓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留擅腰,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓翁潘,卻偏偏與公主長得像趁冈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拜马,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 函數(shù)的重復聲明 如果同一個函數(shù)被多次聲明渗勘,后面的聲明就會覆蓋前面的聲明。 上面代碼中俩莽,后一次的函數(shù)聲明覆蓋了前面一...
    Steve_Leo閱讀 310評論 0 0
  • 函數(shù)和對象 1旺坠、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念。通過函數(shù)可以封裝任意多條語句扮超,而且...
    道無虛閱讀 4,566評論 0 5
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,803評論 0 38
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,103評論 1 32
  • 對象就是一組“鍵值對”(key-value)的集合取刃,是一種無序的復合數(shù)據(jù)集合。鍵名都是字符串出刷,加不加引號都可以蝉衣。 ...
    Steve_Leo閱讀 176評論 0 0