js入門筆記整理

下一篇:js入門筆記整理(二)——操做符javascript


給入門的同窗整理的筆記,不對的地方歡迎指出~java

javascript的組成

首先須要明白的是,一個完整的javascript實現應該由下列三個不一樣的部分組成segmentfault

  • 核心(ECMAScript,ECMAScript是一種語言的標準)
  • 文檔對象模型(DOM)
  • 瀏覽器對象模型 (BOM)

語法

  • 區分大小寫
  • 標識符
  • 註釋
  • 嚴格模式
  • 語句

區分大小寫
ECMAScript中的一切都區分大小寫。如test和Test分別表明不一樣的變量瀏覽器

標識符
所謂標識符,就是指變量、函數、屬性的名字,或者函數的參數。命名規則以下:安全

  • 第一個字符必須是一個字母、下劃線(_)或一個美圓符號($)。注意數字不能當首字母
  • 其它字符能夠是字母、下劃線、美圓符($)或者數字。
    按照慣例,ECMAScript使用駝峯大小寫格式,也就是第一個字母小寫,剩下每一個單詞的首字母大寫。如:doSomething、myBook

註釋函數

  • 單行註釋以兩個斜槓開頭
//單行註釋
  • 塊級註釋以一個斜槓和一個星號(/)開頭,以一個星號和一個斜槓(/結尾)
/*
*這是一個多行
*塊級註釋
*/

嚴格模式
首先要理解,在嚴格模式下,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的轉換:
clipboard.png
這些轉換規則對理解流控制控制語句(如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類型
字符串可使用雙引號("")或單引號('')表示

類型轉換

  • toString()方法

(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'
  • String()函數

(1) 若是值有toString()方法則調用toString()方法
(2) 若是值是null,則返回'null'
(3) 若是值是undefined,則返回'undefined'

Object類型
Object類型有下列屬性和方法:

  • constructor:對象的構造函數
  • hansOwnProperty(propertyName):檢查給定屬性在當前對象(不是實例原型)中是否存在
  • isPropertypeOf(object):檢查傳入的對象是不是對象的原型
  • propertyIsEnumerable(propertyName):檢查給定屬性是否能用for-in枚舉
  • toLocaleSting():返回對象的字符串
  • toSting():轉換成字符串
  • 返回對象的字符串、數值、布爾值。一般與toString()方法的返回值相同

下一篇:js入門筆記整理(二)——操做符


關注做者吧~

clipboard.png

相關文章
相關標籤/搜索