下一篇:js入門筆記整理(二)——操做符javascript
給入門的同窗整理的筆記,不對的地方歡迎指出~java
首先須要明白的是,一個完整的javascript實現應該由下列三個不一樣的部分組成segmentfault
區分大小寫
ECMAScript中的一切都區分大小寫。如test和Test分別表明不一樣的變量瀏覽器
標識符
所謂標識符,就是指變量、函數、屬性的名字,或者函數的參數。命名規則以下:安全
註釋函數
//單行註釋
/* *這是一個多行 *塊級註釋 */
嚴格模式
首先要理解,在嚴格模式下,ECMAScript3標準中的一些不肯定行爲將獲得處理,並且對某些不安全的操做也會拋出錯誤。性能
'use strict'
這是一條編譯指令,用於告訴支持的javascript引擎切換到嚴格模式spa
function fun () { 'ustrict'; //函數體
支持嚴格模式的瀏覽器包括:IE10+、Firfox 4+、 Safari5.1+、Opera和Chrome指針
語句
ECMAScript中的語句以一個分號(;)結尾;若是省略分號,則由解析器肯定語句的結尾。code
var count = a + b //即便沒有分號也是有效的。——不推薦 var count = a + b; //有效的語句——推薦。由於加上分號能夠避免不少錯誤,甚至提升性能
關鍵字和保留字
須要特別注意的就是關鍵字和保留字不能看成標識符使用,即變量、函數等的命名不能和關鍵字保留字同樣。
如: var for;這是錯誤的,由於for是ECMAScript 5的關鍵字。
具體的關鍵字和保留字能夠自行查閱相關書籍
定義變量要使用var操做符(注意var是一個關鍵字),後跟一個變量名(即標識符)。如:
var str;
ESCMScript也支持直接初始化,即定義變量的同時就直賦值如:
var str = 'hello word';
ECSMScript的變量是鬆散類型的,所謂鬆散類型就是能夠保存任何值。所以,在修改變量的值的同時,也能夠修改類型。如:
var str = 'hello word'; str = 100; //有效,但不推薦
這個列子中,str先是值爲'hello word'的字符串,再是值爲100的整型。
*還有一點值得注意的是,使用var定義的變量將成爲其所在做用域內的局部變量。如:
function fun () { var str = 100; //局部做用域 } fun(); console.log(str); //錯誤
*省略var會建立一個全局變量。如:
function fun () { str = 100; //全局變量 } fun(); console.log(str); // 100
咱們並不推薦省略var,由於這可能會致使沒必要要的混亂,使維護困難。在嚴格模式下,給未聲明的變量賦值會拋出錯誤。
用一條語句定義變量,使用逗號隔開,ru:
var str = 'hi', msg = false, val = 100;
ESCMScript有6中數據類型:(首字母大寫)
Undefined Null Number Boolean String Object
typeof操做符(所有小寫)
"undefined" —— 未定義 "boolean" —— 布爾值 "string" —— 字符串 "number" —— 數值 "object" —— 對象或null "function" —— 函數
注意:從技術角度講函數確實不是一種數據類型,它屬於object類型,但能夠經過typeof區分函數和其它對象,
undefined類型
即:使用var定義但沒有初始化(也就是沒有賦值)的變量。
初學者要區分與未定義的變量的區別:
var str; //下面變量未定義 //var msg; consoel.log(str); //'undefined' console.log(msg); //報錯 //變量未定義只能執行typeof操做 typeof(str); // 'undefined' typeof(msg); // 'undefined'
null類型
從邏輯角度來看,null表示一個空對象指針。
typeof(null); //'object'
其實,undefined的值是派生自null,所以,它們的相得性質老是返回 true。如:
console.log(undefined == null); //true
可是注意他們不恆等
console.log(undefined === null); //false
boolean類型
該類型只有兩個值:true和false
各數據類型和boolean的轉換:
這些轉換規則對理解流控制控制語句(如if語句)自動執行Boolean轉換很是重要。如:
var msg = 'not null'; if (msg) { console.log('msg轉換值是true'); }
Number類型
ESCMScript中使用Number類型表示整數和浮點數。
十進制:最基本的字面量格式
八進制:第一位必須是0。如:
070 //八進制的56
十六進制:前兩位必須是0x。如:
oxA //十六進制的10
NaN
NaN,是一個特殊的數值,表示一個本要返回數值的操做數未返回數值的狀況(這樣就不會拋出錯誤)。如:
function fn1 () { return 10; //有數值返回 } var val1 = fn1(); console.log(val1); //10 function fn2 () { return 10; //沒有數值返回 } var val2 = fn2(); console.log(val2); //NaN
任何涉及到nan的操做都返回NaN。如:
Nan / 10 = NaN;
NaN與任何值都不相等,包括NaN自己。如:
console.log(NaN == NaN); //false console.log(NaN === NaN); //false
在ESCMScript中,任何數值除以0,都返回NaN。
如: 300 / 0 = NaN;
數值轉換
NUmber()函數:——可用於任何類型
(1)若是是Booleam值,true和false值分別被轉換成1和0
(2)若是是數值,只是簡單傳入和返回
(3)若是是null,返回0
(4)若是是undefined,返回NaN
(5)若是是字符串
a.空字符串返回0
b.若是隻包含數字(包括正負號),轉換爲十進制數值。如:
'123'轉換爲123 '012'轉換爲12(前導的0忽略)
c.若是包含有效的浮點格式,轉換爲相應的浮點數值(一樣忽略前導的0)
d.若是包含有效的十六進制,如'0xA',轉換爲相應的十進制
e.不然轉換爲NaN
(6)若是是對象,則調用對象的valueof方法,按上述規則轉換。若是返回的值爲NaN,在調用對象的tostring方法,按照上述規則轉換
因爲Numbera()函數在轉換字符串時比較複雜切不夠合理,所以在處理整數的時候更經常使用的是parseInt()函數。
parseInt()函數—— 將數值轉換爲整數
(1)若是第一個字符(空格除外)不是數字或負號,返回NaN
(2)若是第一個字符(空格除外)是數字或負號,函數將解析第二個字符,直至解析完後續字符或者遇到了一個非數字字符。如:
var num1 = parseInt('123ad'); //123 var num2 = parseInt(''); //NaN var num3 = parseInt('0xA'); //10(十六進制) var num4 = parseInt(13.3); //13 var num5 = parseInt('070'); //56(八進制) var num6 = parseInt('20'); //20(十進制)
因爲parseInt()函數在處理八進制時ESCMScript3與ESCMScript5存在分歧,ESCMScript5會忽略數字前面的值。因此爲了不沒必要要的錯誤,建議老是爲函數提供第二個基數(即指定多少進制)。如:
parseInt('020', 10); //十進制 parseInt('010', 8); //八進制 parseInt('7', 10); //十進制 parseInt('7', 2); //二進制
parseFloat()函數——將數值轉換爲浮點數值
(1)之解析十進制
(2)始終忽略前面的0
(3)只有第一個小數點有效
var num1 = parseFloat('123ad'); //123 var num2 = parseFloat(''); //NaN var num3 = parseFloat('0xA'); //0 var num4 = parseFloat(13.3); //13.3 var num5 = parseInt('070'); //70 var num6 = parseInt('20.23e3'); //20.23000
String類型
字符串可使用雙引號("")或單引號('')表示
類型轉換
(1)數值、布爾值、對象和字符串值都有toString()方法
(2)null、undefined沒有toString()方法
(3)方法的第二個參數能夠傳入基數
var num = 10; num.toString(num); //'10' num.toString(num, 2); //'1010' num.toString(num, 8); //'12' num.toString(num, 10); //'10' num.toString(num, 16); //'a'
(1) 若是值有toString()方法則調用toString()方法
(2) 若是值是null,則返回'null'
(3) 若是值是undefined,則返回'undefined'
Object類型
Object類型有下列屬性和方法:
下一篇:js入門筆記整理(二)——操做符
關注做者吧~