1.別忽略結(jié)尾的 ‘;’ 會(huì)影響壓縮后的代碼
2.if條件句后即使只跟一條語(yǔ)句 還是建議加上‘{}’
3.用var定義的變量將成定義該變量的作用域中的局部變量。
4.若定義的變量準(zhǔn)備用來(lái)保存對(duì)象,建議將變量初始化為null看幼;
var a = "110";
Number(a); //轉(zhuǎn)換字符串時(shí)比較復(fù)雜且不合理 eg Number(''); >> 0
parseInt(a); //推薦使用 parseInt(string, radix)//字符串 進(jìn)制 parseInt('') >> NaN
//建議在任何情況都指定第二參數(shù) (10)默認(rèn)就是10
PS:parseFloat() 只解析十進(jìn)制
變量聲明需要注意變量提升
(function(){
console.log(a) //a is not defined
})
(function(){
var a;
console.log(a) //a is undefined
})
(function(){
var a = 1;
function test(){
console.log(a) //a is undefined 此處由于變量提升 var a 會(huì)再函數(shù)的最前面聲明
var a;
}
})
String 字符串
雙引號(hào)與單引號(hào)并無(wú)區(qū)別 并不存在 單引號(hào)解析會(huì)比雙引號(hào)解析快
字符字面量:
console.log("You \t me are singing!")
\t 制表 》》You me are singing!;
\n 換行
\b 空格
\r 回車
字符串特點(diǎn):字符串不可變
null 和 undefined 沒有 toString() 方法;
對(duì)象:一組數(shù)據(jù)和功能(屬性\方法)
的集合 對(duì)象和通過(guò)執(zhí)行 new 操作符跟要?jiǎng)?chuàng)建的對(duì)象類型的名稱來(lái)創(chuàng)建;
var o = new Object(); //不傳遞參數(shù)時(shí) 可以省略后面的小括號(hào);
var o = new Object; // 有效,但不推薦省略圓括號(hào)
運(yùn)算符#
1.一元運(yùn)算符
var i = 0;
var a = i++; //>> a = 0 ; i = 1;
var b = ++i; //>> b = i = 2;
對(duì)非數(shù)值 進(jìn)行 一元 + 操作時(shí) 會(huì)像 Number() 一樣對(duì)該值進(jìn)行轉(zhuǎn)換 效率比較高
var a = "11"; //>> string '11'
var a = +a; //>> number 11
布爾值 會(huì)被轉(zhuǎn)換為 0(false)跟1(true) 字符串值會(huì)先進(jìn)行解析
先調(diào)用它們的 valueOf() 或 toString(); 再轉(zhuǎn)換得到的值;
var a = "";
a = +a; //>> 0 執(zhí)行的操作 Number("") = 0;
2.位操作符
a.按位非:~ 操作符的負(fù)值減1
~2015 》》-2016
b.按位與:&
var rs = 25 & 3; //>>1
25 = 1 1001;
3 = 0 0011;
and = 0 0001;
c.按位或 |
var result = 25 | 3; //》》 27;
d.按位異或 ^
e.左移 <<
二進(jìn)制:var a = 10;
var b = a<<5; //>> 1000000
f.有符號(hào)的右移 >> (保留符號(hào)位 即正負(fù)號(hào)標(biāo)記)
與左移作用相反
g.無(wú)符號(hào)右移 >>>
3.布爾操作符
a.邏輯非 !
b.邏輯與 &&
c.邏輯或 ||
4.乘性操作符
a.乘法 *
b.除法 /
c.求模(取余) %
5.加性操作符
a.如果有一個(gè)操作數(shù)是NaN 則結(jié)果是NaN
b.正無(wú)窮+正無(wú)窮 = 正無(wú)窮
b.負(fù)無(wú)窮-負(fù)無(wú)窮 = 負(fù)無(wú)窮
c.正無(wú)窮+負(fù)無(wú)窮 = NaN
d.若有一個(gè)操作符是字符串 則結(jié)果是字符串拼接
關(guān)系操作符
< > <= >= == ===
兩個(gè)操作數(shù) 都是字符串比較兩個(gè)字符串對(duì)應(yīng)的字符編碼
a."Brick" < "alphabet" true
b."23" < "3" true;
c.null == undefined true
d.null === undefined false
條件操作符
a?b:c 如果a成立 則結(jié)果為b 否則為 c;
逗號(hào)操作符
var num = (1,2,3,4,5,6) //6
------邪---------惡-------的--------分---------割---------線------
label 語(yǔ)句: 使用label語(yǔ)句可以在代碼中添加標(biāo)簽
var num = 0;
outPoint:
for (var i = 0 ; i < 10 ; i++){
for (var j = 0 ; j < 10 ; j++){
if( i == 5 && j == 5 ){
break outPoint; //跳出循環(huán) 并跳到outPoint 繼續(xù)執(zhí)行.
}
num++;
}
}
alert(num); //55
/****************************/
var num = 0;
outPoint:
for (var i = 0 ; i < 10 ; i++){
for (var j = 0 ; j < 10 ; j++){
if( i == 5 && j == 5 ){
break outPoint; //跳出循環(huán) 并跳到outPoint 繼續(xù)執(zhí)行.
}
num++;
}
}
alert(num); //95
break,continue + label 可以精準(zhǔn)返回到你想要的程序位置
with 語(yǔ)句 :作用將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象中 目的 簡(jiǎn)化多次編寫同一對(duì)象的工作
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
/********使用with后******************/
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}
PS:嚴(yán)格模式下不允許使用with語(yǔ)句 否則視為語(yǔ)法錯(cuò)誤
Reason:大量使用with語(yǔ)句會(huì)導(dǎo)致性能下降祭往,同時(shí)也給調(diào)試代碼造成困難 因此不建議使用 with;
2016.12.18