1、JavaScript簡介
1.1網頁分層
web前端一共分三層:javascript
結構層 HTML : 負責搭建頁面結構css 樣式層 CSS : 負責頁面的美觀前端 行爲層 JavaScript : 負責頁面的交互效果,提升用戶體驗java |
若是用舞臺來進行比喻:程序員
HTML 是演員:div,aweb CSS 是化妝師:負責給每一個演員添加裝飾效果面試 javascript是劇本:負責描述每一個演員之間的交互算法 |
1.2 JavaScript誕生
JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱爲JavaScript引擎,爲瀏覽器的一部分,普遍用於客戶端的腳本語言,最先是在HTML網頁上使用,用來給HTML網頁增長動態效果。JS在web瀏覽器端的地位,無人能夠撼動;編程
【做用】:數據驗證、讀寫HTML元素、先後臺數據交互、網頁交互效果、WEB遊戲製做、桌面應用開發(electron)、基於Node.js技術服務器端開發。數組
Javscript,JScript,ActionScript等腳本語言都是基於ECMAScript標準實現的。
在JavaScript,JScript和ActionScript中聲明變量,操做數組等語法徹底同樣,由於它們都是ECMAScript。可是在操做瀏覽器對象等方面又有各自獨特的方法,這些都是各自語言的擴展。
JavaScript是由ECMAScript,DOM和BOM三者組成的。
ECMAScript是一種標準,描述了該語言的語法和基本對象。
文檔對象模型(Document Object Model簡稱DOM),描述處理網頁內容的方法和接口。
瀏覽器對象模型(Browser Object Model簡稱BOM),描述與瀏覽器進行交互的方法和接口。
簡單來講ECMAScript不是一門語言,而是一個標準。ECMAScript是JavaScript的標準,如今咱們學習的版本的ECMAScript四、5。
ECMAScript在2015年6月,發佈了ECMAScript 6版本,語言的能力更強。可是,瀏覽器的廠商不能那麼快的去追上這個標準。這些新的特性。
1.3總結
學習:語言核心、DOM、BOM、頁面特效
ECMAscript 是JavaScript語言的標準
DOM 經過JavaScript操做網頁元素
BOM 經過API(應用程序接口)操做瀏覽器
1.4學習方法
● 要多去「品」程序,多去思考內在邏輯,讀懂每一行代碼!
● JS機械重複性的勞動幾乎爲0,基本都是創造性的勞動。HTML、CSS都是重複的勞動,margin、padding擠來擠去。
● 永遠不要背程序,每個程序都必須本身會寫。
好學的點是什麼:
JavaScript是有界面效果:不像C語言,黑底白字,很枯燥的。
JavaScript的語法來源於C和Java:有C和Java的經驗同窗好學不少。
JavaScript是弱變量類型的語言,動態數據類型語言。
JavaScript運行在宿主環境中,不關心內存,垃圾回收。
很差學的點是什麼:
兼容性問題: IE8是個怪胎,不少東西都不同,因此就要寫兼容寫法,不怕造輪子,多寫幾遍
花式寫法不少,抽象:從簡單入手,細細品味代碼
2、JavaScript基本語法
2.1 JavaScript書寫位置
這事兒吧,挺有意思,就是學習任何的語言,咱們都喜歡在屏幕上直接輸出一點什麼,當作最簡單、最基本的案例。輸出什麼你們隨意,可是不少人都習慣輸出「hello world」,世界你好。感受本身頗有情懷的樣子。
<script type="text/javascript"> alert("hello world!"); </script> |
初學者在學習js時,通常將JS代碼寫在HTML結構中,書寫位置在一對script標籤內。標籤書寫位置能夠是HTML結構中的任意位置。
type屬性:規定的是標籤內部書寫的是純文本類型的JS代碼。
2.2註釋
HTML的註釋:
<!--HTML的註釋--> |
css的註釋:
/*css註釋*/ |
JS註釋:多行註釋、單行註釋
單行註釋:註釋做用範圍只有一行,若是換行了那麼不能註釋。
//這是單行註釋 |
多行註釋:
/* 這是js的塊級註釋 能夠註釋多行 這些註釋不會進行加載 */ |
註釋快捷鍵:
Ctrl+/ 單行註釋 Ctrl+Shift+/ 多行註釋 |
alert()語句
實際上這條語句,在運行一個內置函數,運行函數就要加圓括號,不要糾結這個對象,學全部語言,都是從模仿開始,前期,不要糾結語法的機理是什麼,只要模仿,作就行,你模仿了,就能實現效果,隨着課程的深刻,你將知道每一條語句的機理是什麼。
alert("內容"); |
window.alert("hello world!"); |
alert()實際上是window對象的一個方法,只不過window對象能夠不寫而已。
程序從上到下執行,從左到右順序執行,任何程序都是這樣的。
語句要遵循語法。
alert()做爲一個函數,自定義的內容加引號,單雙引號均可以,全部符號都必須是英文的(JS建議用單引號,HTML用雙引號,這是不成文的規定)。
注意事項:分號不寫就報錯。
alert("從前有坐上")alert("山上有座廟") |
若是正確換行不會報錯。
alert("從前有坐上") alert("山上有座廟") alert("廟裏有個老和尚") |
緣由:JS解析器在解讀代碼時,會去根據語境的結尾劃分語句,若是有分號自動默認是語句的結束,會將後面的語句做爲一條新語句解讀。若是沒有分號,解析器自由的解讀代碼結尾,默認爲換行是一條語句的結尾,沒有換行也沒有分號致使報錯。
在後期上傳代碼前須要壓縮代碼,壓縮後會將全部代碼的換行、空格都刪除,此時JS代碼變成一行,因此會報錯。
prompt()對話框
prompt:提示的意思。
prompt語句也是一個JS內置的功能,能夠傳遞兩個參數,自定義參數內容。通常參數都加引號,兩個參數之間用逗號隔開。
prompt("請輸入年齡:","18"); |
以上兩個參數不是必須,能夠省略參數不寫。
重點:帶圓括號的都叫「函數」或「方法」,並且括號內確定能夠填寫參數,至於有多少個參數(每一個方法規定不同)。
2.3 console控制檯
控制檯是瀏覽器「檢查」裏面的功能,快捷鍵是F12,英文叫作「console」。JS程序員經常使用的調試程序錯誤的面板。程序的全部錯誤,都會在控制檯中輸出(顯示),控制檯是調試代碼的一個利器。
做用1:能夠顯示錯誤個數,錯誤類型,錯誤的代碼位置。
做用2:能夠在控制檯進行代碼編輯,直接在控制檯執行,也能夠在控制檯輸出內容。
經過一條console.log()方法,能夠在控制檯輸出自定義的內容。
console自己是js內置對象,內部有大量的方法和屬性,其中有一個log()方法(函數),能夠幫咱們在控制檯輸出一些對象,而且console.log()方法參數能夠有多個。
console.log("這裏的內容是打印在控制檯的!"); console.log(100-50); console.log(100*50); console.log("%c 你們好:scarf666@163.com","color:red;font-size:30px;"); |
1 console.log() 用於在console窗口輸出信息 2 console.dir() 能夠顯示一個對象的全部屬性和方法。 3 console.table() 會以表格的形式呈現打印的內容 4 console.warn() 在控制檯輸出一條警告信息 5 console.error() 在控制檯輸出一條錯誤消息 6 console.info() 在控制檯輸出一條通知信息 |
console.log的佔位符:
1 %s 格式化字符串 2 %d 格式化整數 3 %i 格式化整數 4 %f 格式化浮點數 5 %o 可擴展的DOM節點格式化 6 %O 可擴展的JavaScript對象格式化 7 %c CSS格式字符串 |
console.log('%s + %s', 1, 1, '= 2'); console.log("%d年%d月%d日",2018,8,8); |
2.4 document對象
document.write() 方法,用來向網頁文檔中(body)輸出內容 |
3、字面量
字面量(Literals):有些書叫作「直接量」、「常量」;
看見什麼,它就是什麼。用於表達一個固定值的表示法。
好比想在程序中表示一個數字,那就寫一個數字就行了。
好比想在程序中表示「你好」,那就要加雙引號。
這些書寫上的規矩,就是所謂的字面量。
通俗理解:字面量就認爲是字面上的意思,所見即所得。計算機在遇到字面量時,當即知道數據類型是什麼,數據的值是什麼。
3.1數字字面量
表示數學概念中數字的表示方法。
數字字面量:整數字面量、浮點數(小數)字面量、特殊值字面量。
JS中有本身的數字字面量表示法,不須要添加任何輔助符號。
3.1.1整數字面量
數字字面量,就是這個數字本身,不須要任何的符號來界定這個數字。
JavaScript中,數字的字面量能夠有三種進制:
10進制:普通的數字(0~9)就是十進制,逢十進一(滿十進一)
8進制:以0或以0o、0O開頭的都是八進制,八進制只能用0~7表示,逢八進一(滿八進一)
16進制:以0x或以0X開頭的都是16進制,16進制只能用(0~9和字母a~f/A~F)表示,逢十六進一(滿十六進一)
【十進制】:
console.log(123); console.log(-123); |
【八進制】:
以0或0o、0O開頭的都是八進制,顯示的時候會以10進制顯示。
console.log(0o36); //3 * 8 + 6 = 30 console.log(0o27); //2 * 8 + 7 = 23 console.log(0O17); //1 * 8 + 7 = 15 console.log(017); //1 * 8 + 7 = 15 console.log(010); //1 * 8 + 0 = 8,以0開頭是八進制,會以10進制顯示 console.log(0100); //8 * 8 + 0 = 64 console.log(01000); //64 * 8 + 0 = 512 console.log(010000); //512 * 8 + 0 = 4096 console.log(0100000); //4096 * 8 + 0 = 32768 console.log(01000000); //32768 * 8 + 0 = 262144
注意:八進制只能用0~7之間的數,若是不合法,那麼js認爲你寫錯了,從而用10進制來顯示。
console.log(088); |
可是以0o、0O開頭的,若是寫錯了,控制檯報錯。
console.log(0o88); |
【16進制】:
逢16進1,每一個位數必須是0~九、A~F/a~f之間,以0x、0X開頭,後面的數字是16進制的數,計算的時候須要轉10進制計算。
console.log(0xff); //15 * 16 + 15 = 255 console.log(0x2b); //2 * 16 + 11 = 43 console.log(-0x2b); //2 * 16 + 11 = -43 console.log(0x11); //1 * 16 + 1 = 17 console.log(0xf); //15 |
若是位數出現大於F的字母,直接報錯:
console.log(0xfg); |
console.log(0x10); //1 * 16 + 0 = 16,以0x開頭是16進制,會以10進制顯示 console.log(0x100); //16 * 16 + 0 = 256 console.log(0x1000); //256 * 16 + 0 = 4096 console.log(0x10000); //4096 * 16 + 0 = 65536 |
3.1.2浮點數字面量
浮點數字面量,就是數學上的「.」點。計算機中,浮點數也稱爲「小數」。
容許使用e來描述乘以10的幾回冪:
console.log(3.1415926535898); console.log(-3.1415926535898); console.log(0.55); console.log(.55); //.55若是整數位是0,能夠不寫 console.log(500000); console.log(5e5); //500000,容許使用e來描述乘以10的幾回冪(次方) console.log(5.6e5); //560000 console.log(1e-5); //0.00001
只有10進制有小數的字面量,八進制、十六進制沒有小數字面量。
科學計算法:e計算法。
console.log(1e-5); //0.00001 console.log(1.2e6); //1200000 console.log(1200000000000000000000000); //1.2e+24 |
3.1.3特殊值字面量
包含:Infinity(無窮大)、NaN(不是一個數)
Infinity:無窮大的意思,區分正、負
計算機計算能力有限,若是超過了最大計算值不會顯示具體數值,直接顯示爲正數無窮大Infinity,若是低於了最小計算值會顯示負數的無窮-Infinity
Infinity能夠是某個超級大的數,或者自己就是一個Infinity特殊值:
console.log(188888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888); //Infinity
console.log(1.2345e309); //Infinity console.log(-1.2345e309); //-Infinity console.log(Infinity); //Infinity console.log(-Infinity); //Infinity console.log(10/0); //Infinity console.log(NaN); //NaN console.log(0/0); //NaN |
NaN:not a Number 不是一個數,其實仍是一個數學字面量,表示的值不是一個正常的數,不能用前面的正規表示法的數。
總結:
數字字面量有:整數字面量(8進制、10進制、16進制)
浮點數字面量:小數、e、Infinity、NaN
3.2 字符串字面量
字符串是一個術語,就是人類說的話。
組成:字母、數字、文字、特殊符號、空白符等。
字符串字面量:將人類說的語言放到一對引號中
字符串能夠寫任意的字符:
console.log("這是漢字字符串"); console.log("hello world!"); console.log("123456"); //數字引號括起來,那麼就不是數字了,而是字符串 console.log("!@#$%^&*("); console.log(" "); |
有一些符號有特殊做用,不能在字符串中寫:
解方法:將特殊字符進行「\」轉義
在字符串中可使用如下特殊符號,好比:
\n 換行 \t tab縮進 \' 單引號 \"" 雙引號 \\ 反斜槓 |
\n換行,\t縮進示例:
console.log("牀前明月光\n疑是地上霜"); console.log("牀前明月光\t疑是地上霜"); |
4、變量
4.1變量語法
變量(Variables),至關於一個容器,內部能夠聽任何類型的數據,和高中代數學習x、y、z很像。它們不是字母,而是蘊含值的符號。它和字面量不一樣,字面量5就是數字5,字面量「你好」就是字符串「你好」。如今這個變量不同了,你看見一個a,實際上不是字母a,而是蘊含着不一樣的值。
變量內的數據是能夠變化的,根據存放的內容發生變化
變量的數據只能存放一個,舊的數據會被新的數據替代
【總體感知】:
<script type="text/javascript"> var a; //定義了一個a變量 a = 100; //給a變量賦值 console.log(a); //輸出變量a </script> |
【語法】:
聲明:var 變量名; 賦值:變量 = 變量值; |
【實例】:
聲明:var a; //定義了一個a變量 賦值:a = 100; //給a變量賦值 |
簡化後的代碼:
var a = 100; |
經過「=」號給變量內部存儲數據,專業叫法「變量賦值」。
你的電腦內存中,就會開闢一個空間,用來存放這個變量a,把右邊的值,賦值給左邊的變量名,var是聲明變量的意思。
4.2變量必須先聲明,才能使用
變量聲明又叫作「變量定義」或「建立變量」。使用關鍵字var,後面定義變量的名字(名稱自定義)。變量名定義須要遵循一個標識符命名規範。
var這個過程能夠叫作聲明(declaration),也能夠叫作定義(definition)
直接運行如下代碼:
console.log(a); |
4.3命名規範
程序中的命名規範:通常使用駝峯命名法或其餘(第一個單詞首字母小寫,後面每一個單詞首字母大寫)
var myNameIs; var my_name_is; |
一、必須以字母、「_」或「$」符號開頭,後面能夠是數字、字母、下劃線等 二、變量名不能包含空格或加減號或特殊符號 三、JavaScript變量名是嚴格區分大小寫,例如A和a表明不一樣的變量 四、不能使用JavaScript中關鍵字和保留字 關鍵字:JavaScript中具有特殊意義的詞,已經被JS佔用,不能用來命名 保留字:如今沒有特殊功能,可是將來可能成爲關鍵字 |
關鍵字:
break do instanceof typeof case else new var catch finally return void continue for switch while debugger* function this with default if throw delete in try |
保留字:
abstract enum int short boolean export interface static byte extends long super char final native class synchronized float package throws const goto private transient debugger implements protected volatile double import public |
【合法的變量名舉例】:
var a; var A; var a888; var _888; var $888; var $o0o_$; var _____; |
【不合法的變量名舉例】:
var 123; var 123abc; var abc@126; var abc¥; var var; //不能使用關鍵字 var class; //不能使用保留字 |
4.4變量賦值
若是一個變量,僅僅被var了,可是沒有賦值,此時這個變量的值是undefined。undefined是變量默認的初始值,表明未定義。
var a; //聲明a變量,爲賦值 console.log(a); //undefined |
變量的賦值用「=」等號,「=」就是賦值符號,在JS中「=」號沒有其餘含義,就表示賦值。使用變量時用的不是變量名,而是內部賦的值。
等號右側賦的值能夠是任意類型,甚至還能夠是一個變量。
var a; //聲明a變量,爲賦值 console.log(a); //undefined a = 100; console.log(a); //100 var b; b = "你好"; console.log(b); var c; c = a; //把a變量的值,賦值給c變量 console.log(c); //輸出100
var a = 1; var b = 2; var c = 3; var d = 4; a = b; //把b的值賦值給a,因此a就替代初始值1變成2 b = a; //目前a變量值是2,把a的值賦值給b,因此b也是2 c = b; //目前b變量值是2,把b賦值給c,因此c就是2 d = a + b + c + d; // 4個變量值相加 console.log(a);//2 console.log(b);//2 console.log(c);//2 console.log(d);//10
變量內部存儲的數據能夠動態發生改變,變化的方式是經過賦值運算進行賦值。
變量數值發生變化,不須要進行屢次var,變量一次定義,能夠屢次改變。
4.5變量聲明的提高
這是JavaScript特有的一個特色,其餘編程語言沒有。
JavaScript 變量的另外一特別之處是,你能夠引用稍後聲明的變量,而不會引起異常。這一律念稱爲「變量聲明提高(hoisting)」;JavaScript 變量感受上是被「舉起」或提高到了全部函數和語句以前。然而提高後的變量將返回 undefined值,因此即便在使用或引用某個變量以後存在聲明和初始化操做,仍將獲得 undefined 值。
如今咱們先去改變變量的值,而後聲明變量,因爲JS有一個機制,叫作「變量聲明」提高,因此如今在程序執行前會已經看見這個程序有一行聲明變量的代碼,因此就會被提高到程序開頭去運行。
console.log(a); //輸出undefined var a; //這行聲明變量的代碼會自動提高到全部執行語句以前。 |
記住JS只能提高變量的聲明,不能提高變量的賦值:
console.log(a); //輸出undefined var a; //這行聲明變量的代碼會自動提高到全部執行語句以前。 a = 100; //變量的賦值不能被提高,因此輸出undefined |
console.log(b); //undefined var b = 100; //雖然合着寫,但變量賦值依然不能被提高,只能提高變量聲明 |
等價於:
var b; //自動提高到前面 console.log(b); //undefined b = 100; //賦值還在原地 |
4.6 不寫var的狀況
a = 100; console.log(a);//100 |
定義a變量的時候沒有寫var,程序沒有報錯,說明這個a變量已經被定義成功並賦值,如今看不出來不寫var和寫var有什麼區別。可是後面隨着深刻,你將知道,不寫var實際上是定義了一個全局變量,做用域是不能控制的。
4.7用逗號隔開多個變量
一個var關鍵字定義多個變量:
逗號「,」表示法,只能用於變量的連續定義,能夠用於賦初始值,不要瞎用。
var a = 10,b = 20,c = 30; console.log(a); console.log(b); console.log(c); console.log(a+b+c); //30,數學相加 console.log(a,b,c); //10 20 30多個參數用逗號隔開一塊兒輸出
4.8區分變量和字面量
使用變量的時候,不能加引號,若是變量加上引號,就變成「字符串」字面量。
var a = 100; console.log(a); //變量 100 console.log('a'); //「字符串」字面量 a |
引號是「字符串」的定界符,因此引號裏面的a語句失去了變量的意思,變成字面量的字符串a了。
5、數據類型
5.1數據類型分類
數據:計算機看到的全部對象都是數據,數據分不少類,都會分類保存。
JavaScript中的值:不管是字面量仍是變量,都有明確的類型。
簡單的基本數據類型有5種:
Number 數字類型,不區分整數、浮點數、特殊值、進制 String 字符串類型,全部有引號的數據都是字符串類型 Boolean 布爾類型,僅有兩個值true(真)和false(假) undefined undefined類型,變量未定義時的值,這個本身是一種類型。 null Object類型,這個值本身是一種類型,null自己是個空對象。 |
5.2數據類型檢測
用typeof這個關鍵字能夠檢測變量的值是什麼類型。
var a = 123456; //Number類型 var b = "123456"; //String類型 var c = true; //Boolean類型 var d = null; //null類型(空對象) var e; //undefined類型 console.log(typeof a); console.log(typeof b); console.log(typeof c); console.log(typeof d); console.log(typeof e);
語法是如下兩種均可以:
typeof 值; typeof(值); |
5.3 number類型
全部數字都是number類型
var a = 100; var b = -100; var c = 12.8; var d = 5e5; var e = 0xff; var f = 016; var g = NaN; var h = Infinity; console.log(typeof a); //number console.log(typeof b); //number console.log(typeof c); //number console.log(typeof d); //number console.log(typeof e); //number console.log(typeof f); //number console.log(typeof g); //number console.log(typeof h); //number
JS中全部數字都是number類型,不細分爲整型、浮點型、特殊值等。
全部數字(不分正負、不分進制)、Infinity、NaN
5.4 String類型
var n1 = "哈哈"; var n2 = "123"; var n3 = ""; //空字符串也是字符串 console.log(typeof n1);//String console.log(typeof n2);//String console.log(typeof n3);//String
這個變量是什麼類型,和賦的值有關係,和定義的時候沒有關係。定義時,都是用var關鍵字定義。
var mm = 123456; //number; console.log(typeof mm); mm = "嘻嘻"; //改成String是合法的 console.log(typeof mm);
咱們說JS叫動態數據類型的語言,緣由就在這裏,賦值的時候就決定了這個變量的類型,甚至還能夠改變這個變量的值爲其餘類型的值,變量的類型是由值規定,而不是人規定。
5.5 undefined類型
以前說過,一個變量var,沒有賦值,默認值是undefined。
var a; //只定義,沒有賦值,因此是undefined console.log(typeof a); //undefined |
5.6加號的意義
加號是一個數學運算符,先提早說一下。
加號左右兩邊都是數字的時候,就是數學加法運算。
加號左右兩邊其中有一個不是數字,或都不是數字的時候,就是拼接字符串,結果是字符串。
var n1 = '10'; var n2 = '24'; console.log(n1 + n2); //1024 字符串拼接 var s1 = 10; var s2 = 24; console.log(s1 + s2); //34 數學相加 var a = 1; var b = 2; var c = 3; console.log(a+b+'c'); //3c,從左到右 var a = 1; var b = 2; var c = 3; console.log('a'+a+b+'c'); //a12c,從左到右
6、數據類型轉換
6.1 string 轉 number類型
prompt()方法接收的值都是string類型,用戶輸入純數字,也是字符串的數字。
var a = prompt("請輸入第一個數字"); //把用戶輸入的值存儲在變量中 var b = prompt("請輸入第二個數字"); console.log(a+b); //字符串相加 console.log(parseInt(a+b)); //先算a+b字符串。再轉爲number console.log(parseInt(a) + parseInt(b)); //先算a+b字符串。再轉爲number
有一些方法能夠將數據String字符串轉換爲number類型。
parseInt() 轉換爲整數 parseFloat() 轉換爲浮點數 |
6.1.1轉換整數方法parseInt()
parseInt()就是將一個String類型或浮點數轉換爲整數,不四捨五入,直接截取整數部分,若是這個String有亂七八糟的內容,直接截取前面數字部分。
var a = '123'; console.log(typeof a); //string console.log(typeof parseInt(a)); //number //下面的案例結果都是Number類型 console.log(parseInt('123')); //123 console.log(parseInt('123.6')); //123 console.log(parseInt('123塊錢')); //123 console.log(parseInt('123塊錢2毛5')); //123 console.log(parseInt('123px')); //123 console.log(parseInt('-123.9999')); //-123
parseInt若是不能轉,那麼就返回NaN
console.log(parseInt('我有123塊錢')); //NaN |
獲得NaN的方法又多了一種,上午講的0/0獲得NaN,8/0獲得Infinity
parseInt只能返回整數,因此使用它會丟失小數部分。
parseInt()不只僅可以將字符串轉爲整數,還能用進制的轉換,把任何進制的數字,都換爲10進制。
另外,因爲ECMAScript 3 和 5存在着分歧,調用 parseInt()函數時最好帶上進制(radix) 參數,這個參數用於指定使用哪種進制。若是指定了進制,那字符串前能夠不帶前綴「0」、「0o」、「0x」。
若是不指定第二個參數,ECMAScript 5默認爲十進制。
能夠明確指定第二個參數,規定進制,用於數字取整換算、字符串轉數字。
console.log(parseInt(0xf)); console.log(parseInt(0xf, 16));//不加引號會二次轉換,先將0xf轉爲15再將15轉爲16進制的21 console.log(parseInt("0xf", 16)); console.log(parseInt("0xf", 16)); console.log(parseInt("f", 16)); console.log(parseInt(17, 8)); console.log(parseInt(021, 8)); console.log(parseInt('015', 10)); console.log(parseInt(15.88, 10)); console.log(parseInt('15.88', 10)); console.log(parseInt('15*3', 10)); console.log(parseInt('15px', 10)); console.log(parseInt(12, 13)); console.log(parseInt(1111, 2)); console.log(parseInt(10, 8)); //8 console.log(parseInt(070, 8)); //070先轉爲八進制的56,再進行8進制轉換=46 console.log(parseInt(0xf, 8)); //13 console.log(parseInt("010", 8)); //8 console.log(parseInt("0108", 8)); //8
6.1.2轉浮點數方法
前提:純數字字符串、數字在字符串前面,若是其餘字符在前面會轉爲NaN。儘量將一個字符串轉換爲浮點數,浮點數後面若是有其餘內容,直接捨棄。
將普通字符串轉爲浮點數。
parseFloat() 將有效的數字轉爲浮點數 |
var a = '123.456.888';
var b = parseFloat(a);
console.log(a);
console.log(b);
console.log(parseFloat("1.2.3")); console.log(parseFloat("12.3")); console.log(parseFloat(".9")); console.log(parseFloat("1.2e-5")); console.log(parseFloat("1.2e-5abc")); console.log(parseFloat("aaa1.2e-5abc")); console.log(parseFloat(" "));
就是說,數字類型都是number,不分整數和浮點數,可是轉換的時候分。
6.2 Number() 把對象的值轉換爲數字
console.log(typeof Number("123")); console.log(Number("123px")); console.log(Number(true)); console.log(Number(false)); console.log(Number(undefined)); console.log(Number(Infinity));
6.3 String() 把對象的值轉換爲字符串
console.log(typeof String(123)); console.log(String("123px")); console.log(String(true)); console.log(String(false)); console.log(String(1)); console.log(String(0)); console.log(String(undefined)); console.log(String(Infinity));
7、數學運算符
運算符(Operators,也翻譯爲操做符),是發起運算的最簡單形式。分不少種:一元運算符、二元運算符、三元運算符等。
運算符的分類見仁見智,咱們對運算符進行以下分類:
數學運算符(Arithmetic operators)
比較運算符(Comparison operators)
邏輯運算符(Logical operators)
賦值運算符(Assignment operators)
按位運算符(Bitwise operators)
條件 (三元) 運算符(Conditional operator)
算術運算符使用數值(字面量或者變量)做爲操做數並返回一個數值。標準的算術運算符就是加、減、乘、除、求餘。
+ 加法運算符 - 減法運算符 / 除法運算符 * 乘法運算符 % 取餘數(取模運算符) () 括號,優先算 |
console.log(10+5); //15 console.log(10-5); //5 console.log(10*5); //50 console.log(10/5); //2 |
取餘數,實際上也是除,一個數除以另外一個數的餘數,要的就是餘數:
console.log(12 % 3); //0 console.log(121 % 11); //0 console.log(10 % 10); //0 console.log(6 % 3); //0 console.log(8 % 5); //3 console.log(8 % 3); //2
默認的計算順序:先乘除,後加減。乘、除、取餘是平級,先碰見誰,就先算誰。
console.log(1 + 2 * 3); //7 console.log(1 + 2 * 3 % 3); //1 console.log(1 + 2 % 3 * 3); //7 |
能夠用圓括號改變計算的前後順序:
console.log(4 * 3 + (1 + 2) * 3); //21 |
8、Math數學對象
Math數學對象,內部封裝了大量的方法和屬性,能夠幫助咱們快速獲得一些數學的運算結果。
Math.random()隨機數:
console.log(Math.random()); //0~1之間的隨機小數 console.log(Math.random() * 10); //0~10之間的隨機小數 console.log(parseInt(Math.random() * 10)); //0~9之間的隨機整數 |
Math.sqrt()開平方根:
console.log(Math.sqrt(2)); console.log(Math.sqrt(3)); |
一個數的多少次方(次冪):
console.log(Math.pow(3,4)); //81 console.log(Math.pow(5,7)); //78125 |
圓周率:直接打點調用屬性,不須要加圓括號。
console.log(Math.PI); //3.141592653589793 |
特殊的數學運算,不少公司在考,考你對面試的重視程度和基本功,可是這個知識實戰中基本不多用。