JS-嚴(yán)格模式劫谅、關(guān)鍵字和保留字见坑、var操作符嚷掠、數(shù)據(jù)類型

嚴(yán)格模式

  • 嚴(yán)格模式是為JavaScript定義了一種不同的解析與執(zhí)行模型。在嚴(yán)格模式下荞驴,ECMAScript3中的一些不確定的行為將得到處理不皆,而且對(duì)某些不安全的操作也會(huì)拋出異常。
  • 支持嚴(yán)格模式的瀏覽器: IE 10+熊楼、Firefox 4+霹娄、Safari 5.1+、Opera12+和Chrome鲫骗。
/*使用嚴(yán)格模式犬耻,可以在頂部添加以下代碼*/
" use strict";

/*在函數(shù)體內(nèi)部的上方包含這條編譯指令,也可以指定函數(shù)在嚴(yán)格模式下執(zhí)行*/
function doSomething() {
  " use strict";
  //函數(shù)體
}

JavaScript關(guān)鍵字和保留字

  • 關(guān)鍵字和保留字不能被作為標(biāo)識(shí)符执泰。
/*關(guān)鍵字*/
break 
case catch continue 
do debugger default delete
else
for finally function
if in instanceof
new
return
switch
this throw try typeof
var void
while with
/*保留字*/
abstract
boolean byte 
char class const 
debugger double
enum export extends 
final float 
goto
implements import int interface
long let
native 
package private protected public
short static super synchronized
throws transient
volatile
yield

var操作符

  • var操作符定義變量香追。
/*可以只定義一個(gè)變量不賦值,此時(shí)的變量為undefined*/
var message;

/*定義變量的同時(shí)賦值*/
 var message = "hi"; //賦給變量message一個(gè)字符串
  • 在函數(shù)中定義變量時(shí)要注意變量的作用域坦胶。
fuction test() {
  var message = "hi"; //在函數(shù)體內(nèi)使用var定義的變量為局部變量
}
test();
alert(message)晴楔; //此時(shí)會(huì)報(bào)錯(cuò)顿苇,因?yàn)榫植孔兞吭趖est函數(shù)退出后就會(huì)被銷毀

/*這里可以省略var操作符使message變量變?yōu)槿肿兞浚煌扑]使用税弃,因?yàn)樵诰植孔饔糜蛑卸x的全局變量很難維護(hù)纪岁,有意的省略var操作符,也會(huì)由于相應(yīng)變量不會(huì)馬上就有定義二導(dǎo)致不必要的混亂则果。給未經(jīng)聲明的變量賦值在嚴(yán)格模式下會(huì)導(dǎo)致拋出ReferanceError錯(cuò)誤幔翰。*/
  • 使用一條語(yǔ)句定義多個(gè)變量,中間用逗號(hào)隔開西壮。
var message = "hi",
      found = "false",
      age = 29;
  • 在嚴(yán)格模式下遗增,不能定義名為eval或arguments的變量,否則會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤款青。

JavaScript數(shù)據(jù)類型--使用typeof操作符可以檢測(cè)變量的數(shù)據(jù)類型

  • Undefined類型
    Undefined類型只有一個(gè)值做修,即特殊的undefined。
var message
alert (message == undefined);//true
alert(typeof message) ; //undefined
/*此處聲明了變量message抡草,但未對(duì)齊賦值饰及,所以message的值為undefined*/

/*此處還應(yīng)注意,對(duì)于沒(méi)有聲明的變量只能使用typeof操作符檢測(cè)其數(shù)據(jù)類型*/
// var age; 
alert(age); //報(bào)錯(cuò)康震,因?yàn)閍ge沒(méi)有被聲明
alert(typeof age);  //undefined
  • Null類型
/*從邏輯上看燎含,null值表示一個(gè)空對(duì)象指針,使用typeof操作符檢測(cè)null值會(huì)返回“object”*/
var car = null;
alert(typeof car);  //object

/*如果想要定義一個(gè)變量來(lái)保存對(duì)象腿短,最好將該變量初始化為null屏箍,這樣可以直接檢查null值就可以知道相應(yīng)變量是否已經(jīng)保存了一個(gè)對(duì)象的引用*/
if (car != null) {
  //對(duì)car對(duì)象執(zhí)行某些操作
}
  • Boolean類型
    該類型只有true和false兩個(gè)字面值绘梦,區(qū)分大小寫。
  • Number類型
/*十進(jìn)制*/
var intNum = 55; //整數(shù)

/*
八進(jìn)制
第一位必須是0铣除,如果字面值中的數(shù)值超出了范圍谚咬,那么前導(dǎo)零被忽略,后面的的數(shù)值將會(huì)被當(dāng)作十進(jìn)制解析
八進(jìn)制字面量在嚴(yán)格模式下是無(wú)效的尚粘,會(huì)導(dǎo)致支持該模式的JavaScript引擎拋出錯(cuò)誤
*/
var octalNum1 = 070;  //八進(jìn)制56
var octalNum2 = 079;  //無(wú)效的八進(jìn)制數(shù)值择卦,解析為79

/*
十六進(jìn)制
十六進(jìn)制字面值的前兩位必須是0x,后跟任何十六進(jìn)制數(shù)字(0~9及A~F)郎嫁,字母不區(qū)分大小寫
*/
var hexNum1 = 0xA;  //十六進(jìn)制的10

/*
浮點(diǎn)數(shù)值
該數(shù)值中必須包含一個(gè)小數(shù)點(diǎn)秉继,并且小數(shù)點(diǎn)后面必須至少有一位數(shù)字
*/
var floatNum1 = 1.1;
var floatNum2 = 3.125e7;  //等于31250000

/*
數(shù)值范圍: 5e~1.7976931348623157e+308
如果某次計(jì)算的結(jié)果超出了這個(gè)范圍,將會(huì)被轉(zhuǎn)換成-Infinity或Infinity泽铛,不會(huì)參與下一次計(jì)算
可以使用isFinite()函數(shù)檢測(cè)一個(gè)屬是不是有窮的尚辑,這個(gè)函數(shù)的參數(shù)位于最小與最大數(shù)值之間時(shí)會(huì)返回true
*/
var result = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(result));  //false

/*
NaN
用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù)未返回值的情況,這樣就不會(huì)拋出錯(cuò)誤
*/
alert(NaN/10);   //NaN,任何涉及NaN的操作都會(huì)返回NaN
alert( NaN == NaN);  //false,NaN和任何值都不等盔腔,包括其本身
alert(isNaN(NaN)); //true,isNaN()函數(shù)接受一個(gè)參數(shù)杠茬,可檢測(cè)該參數(shù)是否“不是數(shù)值”
alert(isNaN(10));  //false(10是一個(gè)數(shù)值)
alert(isNaN(“10”));  //false(可以被轉(zhuǎn)換成數(shù)值10)
alert(isNaN(“blue”));  //true(不能被轉(zhuǎn)換成數(shù)值)
alert(isNaN(true));  //false(可以被轉(zhuǎn)換成數(shù)值1)
/*因此,在調(diào)用isNaN()函數(shù)時(shí)弛随,會(huì)先調(diào)用對(duì)象的valueOf()方法瓢喉,確定該方法返回的值是否可以轉(zhuǎn)化成數(shù)值,如果不能舀透,則基于這個(gè)返回值再調(diào)用toString()方法栓票,再測(cè)試返回值*/

/*
數(shù)值轉(zhuǎn)換
有三個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()和parseFloat()
*/
var num1 = Number("Hello World");  //NaN
var num2 = Number("");  //0
var num3 = Number("000011");  //11
var num4 = Number(true);  //1

var num1 = parseInt("1234blue");  //1234
var num2 = parseInt("");  //NaN
var num3 = parseInt("0xA");  //10(十六進(jìn)制)
var num4 = parseInt(22.5);  //22
var num5 = parseInt("070");  //56(八進(jìn)制)
var num6 = parseInt("70");  //70(十進(jìn)制)

var num1 = parseFloat("1234blue");  //1234
var num2 = parseFloat("0908.5");  //908.5
var num3 = parseFloat("0xA");  //0
var num4 = parseFloat(22.5);  //22.5
var num5 = parseFloat("22.34.5");  22.34
var num6 = parseFloat("3.125e7");  //31250000
  • String類型
    String類型用于表示由零或多個(gè)16位Unicode字符組成的字符序列愕够,即字符串,可以用雙引號(hào)(“)或單引號(hào)(‘)表示走贪。
/*字符字面量*/
\n  //換行
\t  //制表
\b  //退格
\r  //回車
\f  //進(jìn)紙
\\  //斜杠
\'  //單引號(hào)('),在用單引號(hào)次奧是的字符串中使用
\\"  //雙引號(hào)(")惑芭,在用雙引號(hào)次奧是的字符串中使用
\xnn  //以十六進(jìn)制代碼nn表示的一個(gè)字符(其中n為0~F)坠狡。例如,\x41表示“A”
\unnn  //以十六進(jìn)制代碼nnnn表示的一個(gè)Unicode字符(其中n為0~F)遂跟。例如 擦秽,\u03a3表示希臘字符Σ

/*
字符串的特點(diǎn)
字符串一旦創(chuàng)建,它們的值就不能改變漩勤,要改變某個(gè)變量保存的字符串感挥,首席按要銷毀原來(lái)的字符串,然后再用一個(gè)包含新值的字符串填充該變量
*/
var lang = "Java";
lang = lang + "Script";
alert(lang);  //JavaScript

/*轉(zhuǎn)換為字符串toString()方法和Sting()方法*/
var age  = 11;
var ageString = age.toString();  //字符串“11”
var found = true;
var foundString = found.toString();  //字符串“true”

/*在不知道要轉(zhuǎn)換的值是不是null或undefined的情況下可以使用String()方法*/
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1 ));  //"10"
alert(String(value2 ));  //"true"
alert(String(value3 ));  //"null"
alert(String(value4 ));  //"undefined"
  • Object類型
/*創(chuàng)建自定義對(duì)象*/
var 0 = new Object();

/*Object的每個(gè)實(shí)例都具有以下屬性和方法*/
constructor  //保存用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)越败。對(duì)于當(dāng)前例子而言触幼,構(gòu)造函數(shù)就是Object()。
hasOwnProperty(propertyName)  //用于檢查給定的屬性當(dāng)前對(duì)象實(shí)例中是否存在究飞。作為參數(shù)的屬性名必須以字符串形式指定置谦。
isPrototypeOf(object)  //用于檢查傳入的對(duì)象是否是當(dāng)前對(duì)象的原型堂鲤。
propertyIsEnumerable(propertyName)  //用于檢查給定的屬性是否能夠使用for-in語(yǔ)句來(lái)枚舉。與hasOwnProperty()方法一樣媒峡,作為參數(shù)的屬性名必須以字符串形式指定瘟栖。
toLocalString  //返回對(duì)象的字符串表示,該字符串與執(zhí)行環(huán)境的地區(qū)對(duì)應(yīng)谅阿。
toString  //返回對(duì)象的字符串表示半哟。
valueOf  //返回對(duì)象的字符串、數(shù)值或布爾值類型签餐。通常與toString()方法的返回值相同寓涨。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市氯檐,隨后出現(xiàn)的幾起案子戒良,更是在濱河造成了極大的恐慌,老刑警劉巖冠摄,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糯崎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡河泳,警方通過(guò)查閱死者的電腦和手機(jī)拇颅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乔询,“玉大人,你說(shuō)我怎么就攤上這事韵洋「偷螅” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵搪缨,是天一觀的道長(zhǎng)食拜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)副编,這世上最難降的妖魔是什么负甸? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮痹届,結(jié)果婚禮上呻待,老公的妹妹穿的比我還像新娘。我一直安慰自己队腐,他們只是感情好蚕捉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柴淘,像睡著了一般迫淹。 火紅的嫁衣襯著肌膚如雪秘通。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天敛熬,我揣著相機(jī)與錄音肺稀,去河邊找鬼。 笑死应民,一個(gè)胖子當(dāng)著我的面吹牛话原,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瑞妇,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼稿静,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了辕狰?” 一聲冷哼從身側(cè)響起改备,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔓倍,沒(méi)想到半個(gè)月后悬钳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡偶翅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年默勾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聚谁。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡母剥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出形导,到底是詐尸還是另有隱情环疼,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布朵耕,位于F島的核電站炫隶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阎曹。R本人自食惡果不足惜伪阶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望处嫌。 院中可真熱鬧栅贴,春花似錦、人聲如沸熏迹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)癣缅。三九已至厨剪,卻和暖如春哄酝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背祷膳。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工陶衅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人直晨。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓搀军,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親勇皇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子罩句,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355