basic
在這里,不想直接照抄某個(gè)網(wǎng)站的文章或者觀點(diǎn)笨鸡,只是標(biāo)注一些注意點(diǎn)
對(duì)大小寫敏感
Comments
// /* */
tips: /* 但是, 你不能, /* 嵌套注釋 */ 語法錯(cuò)誤 */
Declarations
var
let 聲明塊范圍局部變量(block scope local variable)姜钳,可選擇將其初始化為一個(gè)值。
const 聲明一個(gè)只讀(read-only)的有名字的常量形耗。
聲明變量(Declaring variables)
- 使用關(guān)鍵詞 var哥桥。
- 直接賦值。
- 使用關(guān)鍵詞let激涤。
tips:時(shí)用來聲明語句塊代碼段的局部變量(block scope local variable)拟糕。
對(duì)變量求值(Evaluating variables)
用var 和let聲明為賦初值的變量,只會(huì)被設(shè)定為undefined.
tips - undefined值在布爾類型環(huán)境中會(huì)被當(dāng)作false undefiend --> false
- 數(shù)值類型環(huán)境中undefined值會(huì)被轉(zhuǎn)換為NaN undefiend --> NaN(Not a Number)
- 空值 null 在數(shù)值類型環(huán)境中會(huì)被當(dāng)作0來對(duì)待 null --> 0
var a = undefined;
var a ;
變量作用域
if(true){
var x= 5;
}
console.log(x);//5
if (true) {
let y = 5;
}
console.log(y); // ReferenceError: y is not defined
tips:ECMAScript 6 之前的JavaScript沒有 語句塊 作用域倦踢;相反送滞,語句塊中聲明的變量將成為語句塊所在代碼段的局部變量瘤泪。不是語句塊作用域矾麻,聲明了 x 的那個(gè)函數(shù)(或全局范圍)矫户。
聲明提升
x = undefined;
console.log(x === undefined);
var x =3;
var myvar = "my value";
(function(){
console.log(myvar);
var myvar = "local value";
})();
var myvar1 = "my value";
(function(){
var myvar1 ;
console.log(myvar1);
var myvar1 = "local value";
})();
tips:變量聲明提升了叁巨,但是其值賦予undefined.
全局變量
其對(duì)象是window
window.variable
parent.phoneNumber
Constants..常量
const prefix="404";
常量必須被初始化為某個(gè)值。
tips:不能用于變量或函數(shù)名相同的名字來命名常量.
數(shù)據(jù)結(jié)構(gòu)和類型
識(shí)別7種值
- 6種是 原型的數(shù)據(jù)類型
Boolean null undefined ,Number , String, Symbol
typeof關(guān)鍵字层扶,查看其類型.
typeof Boolean; //function
typeof null; // object
typeof NULL; // undefiend
typeof undefiend; //undefiend
typeof Number; //function
typeof String;//function
typeof Symbol;//function
typeof Object;//function
通過typeof可以看出劣挫,Boolean橡淑、Number、String蕊梧、Symbol的類型是function,null是一個(gè)關(guān)鍵字腮介,用于表示空值的對(duì)象肥矢。NULL則是表示一個(gè)變量,值為undefined叠洗。Symbol是在 ECMAScript 6 中新添加的類型甘改,一種數(shù)據(jù)類型,它的實(shí)例是唯一且不可改變的灭抑。
- 以及Object對(duì)象
自動(dòng)轉(zhuǎn)換
tips:"37" - 7 ;//30,自動(dòng)轉(zhuǎn)換成數(shù)字
"37"+7;//377十艾,自動(dòng)轉(zhuǎn)換成字符串
converting strings to numbers
parseInt()和parseFloat();
tips:將數(shù)字字符串轉(zhuǎn)換成數(shù)字的方法parseInt(),parseFloat(),
還有單目加發(fā)運(yùn)算符
'1.1'+'1.1';//1.1.1.1
(+'1.1')+(+'1.1');//2.2
字面值(Literals)
字面值是由語法表達(dá)式定義的常量;或腾节,通過由一定字辭組成的語詞表達(dá)式定義的常量
在JavaScript中忘嫉,你可以使用各種字面值。這些字面值是腳本中按字面意思給出的固定的值案腺,而不是變量庆冕。(譯注:字面值是常量,其值是固定的劈榨,而且在程序腳本運(yùn)行中不可更改 ).
字面值的類型如下:
- 數(shù)組字面值(Array literals)
- 布爾字面值(Boolean literals)
- 浮點(diǎn)數(shù)字面值(Floating-point literals)
- 整數(shù)(Intergers)
- 對(duì)象字面值(Object literals)
- RegExp literals
- 字符串字面值(String literals)
數(shù)組字面值(Array literals)
數(shù)組字面值是一個(gè)封閉在方括號(hào)對(duì)([])中的包含有零個(gè)或多個(gè)表達(dá)式的列表访递,其中每個(gè)表達(dá)式代表數(shù)組的一個(gè)元素。
tips:數(shù)組字面值中的多余逗號(hào)
若你在同一行中連寫兩個(gè)逗號(hào)(,)同辣,數(shù)組中就會(huì)產(chǎn)生一個(gè)沒被指定的元素拷姿,其初始值是undefined(除了最后逗號(hào)去除的情況)。
var fish = ["Lion", , "Angel"];
var fish = ["Lion", undefined , "Angel"];//等同
var fish = [ , , 'Alison', 'Gavin', ]
var fish = [ undefiend, undefiend, 'Alison', 'Gavin' ]//最后的逗號(hào)會(huì)去掉
而且他倆的長(zhǎng)度一樣旱函,都是.length = 4
var coffees = ['a', , 'b', , , ];
var coffees = ['a' , undefined, 'b' , undefined, undefiend ];
console.log(coffees.length);//5
浮點(diǎn)數(shù)字面值(Floating-point literals)
語法:[(+|-)][digits][.digits][(E|e)[(+|-)]digits]
對(duì)象字面值(Object literals)
對(duì)象字面值是封閉在花括號(hào)對(duì)({})中的一個(gè)對(duì)象的零個(gè)或多個(gè)"屬性名-值"對(duì)的(元素)列表响巢。
var sales = "tomacat";
function carType(name){
return (name === 'hone')? name : "sorry";
};
var car ={myCar: "staturn", getCar: carType('hone'), special: sales};
console.log(car.myCar);//staturn
console.log(car.getCar);//hone
console.log(car.special); // tomacat
tips:
- 可以使用數(shù)字或字符串字面值作為屬性名,或者在另一個(gè)字面內(nèi)值嵌套一個(gè)字面值棒妨。
var carr = {mycara: {a: 'Saab', b: 'Jeep'}, 7: 'Mazda'};
- 對(duì)象屬性名可以是任意字符串抵乓,包括空串。如果對(duì)象屬性名字不是合法的javascript標(biāo)識(shí)符靶衍,它必須用""包裹灾炭。屬性的名字不合法,那么便不能用.訪問屬性值颅眶,而是通過類數(shù)組標(biāo)記("[]")訪問和賦值蜈出。
這里說的是,不是合法字符串涛酗,都需要通過類數(shù)組標(biāo)記來訪問铡原,不能通過' . 屬性'來訪問偷厦。
var unus = {
"": "an empty String",
"!": "Bang"
}
//console.log(unus."");//SyntaxError: missing name after . operator
console.log(unus[""]);
//console.log(unus.!);//SyntaxError: missing name after . operator
console.log(unus["!"]);
var foo ={a : 'alpha', 2: 'two'};
console.log(foo.a); //alpha
console.log(foo[2]);//two
console.log(foo.a);
//console.log(foo.2);//SyntaxError: missing ) after argument list
console.log(foo[a]);//undefined,并不是Error: a is not defined
console.log(foo[2]);
console.log(foo["a"]);
console.log(foo["2"]);
RegExp字面值
一個(gè)正則表達(dá)式是字符被斜線圍成的表達(dá)式。var foo =/asd+as/
字符串字面值(String literals)
字符串字面值可以包含有零個(gè)或多個(gè)字符燕刻,由雙引號(hào)(")對(duì)或單引號(hào)(‘)對(duì)包圍只泼。
tips:字符串字面值后自動(dòng)轉(zhuǎn)換為一個(gè)臨時(shí)字符串對(duì)象,就可以調(diào)用對(duì)象的方法卵洗,然后廢棄掉那個(gè)臨時(shí)的字符串變量请唱。
參考文獻(xiàn):https://developer.mozilla.org/zh-CN/
PS: 若你覺得可以、還行过蹂、過得去十绑、甚至不太差的話,可以“關(guān)注”一下酷勺,就此謝過!