js是從上到下,從左到右執(zhí)行的
一:變量
1.命名規(guī)則:必須由字母车猬,下劃線门躯,數(shù)字和$符號組成署咽,不能以數(shù)字開頭。
2.不能是關鍵字和保留字生音。例如: for,while.
3.區(qū)分大小寫的
4.命名規(guī)范:名字必須有意義宁否,遵守駝峰命名法,首字母小寫缀遍,后面單詞的首字母要? 大寫慕匠,例如:? ? ? ? ?userName userPassword
例:var age = 18;
二:數(shù)據(jù)類型
簡單數(shù)據(jù)類型:Number String Boolean Undefined Null
Number類型:
十進制: 0-9 例:var num = 10;?
十六進制: 0-9? A-F A=10 B=11,C=12,D=13,E=14,F=15.例:var num = 0xA;
八進制:基礎數(shù)字:0-7 例:var num = 010;
浮點數(shù):var n =5e-324; //科學計數(shù)法 5乘10的-324次方。
浮點數(shù)最高精度是17位小數(shù)域醇,不要判斷兩個浮點數(shù)是否相等台谊。
浮點數(shù)最大值 :Number.MAX_VALUE ,值為:1.7976931348623157e+208
浮點數(shù)最小值Number.MIN_VALUE。值為5e-324
無窮大:Infinity 無窮衅┲俊:-Infinity
String類型:
var msg = '好好學習'? var ,msg = "好好學習"
單引號和雙引號不能混用锅铅。
\n 換行
\t 制表
\b 空格
Boolean類型:
true和false,區(qū)分大小寫
計算機內(nèi)部存儲:true為1,false為0减宣;
Undefined Null:
1.Undefined表示一個聲明了沒有賦值的變量盐须,變量只聲明的時候值默認是Undefined
2.Null表示一個空,變量的值如果為null,必須手動設置漆腌。如果一個變量的值是null,說明變量是有值的贼邓,是空阶冈。?
復雜數(shù)據(jù)類型:Object
三:獲取變量的類型
typeof
例:var age = 18;
var name = 'wyn';
console.log(typeof age);? //Number類型
console.log(typeof name); //string類型
var result = typeof name;
console.log(typeof result);//typeof返回的結(jié)果是string
四:字面量
在源代碼中一個固定值的表示法。
數(shù)值字面量:8,9,10
字符串字面量:‘好好學習’塑径,“好好學習”
布爾值字面量:true女坑,false
五:注釋
單行注釋:? //被注釋的單行內(nèi)容
多行注釋: /* 被注釋的多行內(nèi)容*/
六:數(shù)據(jù)類型轉(zhuǎn)換
谷歌瀏覽器內(nèi),字符串顏色是黑色的统舀,數(shù)值和布爾類型顏色是藍色的匆骗,Undefined和Null是灰色的。
轉(zhuǎn)換成字符串類型:
1: toString()方法
var num = 18;
var isRight = true;
?console.log(typeof num.toString());
console.log(typeof isRight.toString());? ?//? 用typeof獲取類型誉简,用toString轉(zhuǎn)換為字符串
2:string()方法
null和Undefined無法使用toString方法绰筛,var a = null; console.log(a.toString());報錯,不能讀取屬性
var num = 18;
var isRight =true;
console.log(String(num));//轉(zhuǎn)換為字符串
console.log(String(isRight));
3:字符串拼接轉(zhuǎn)換方法
var num = 18;
var isRight = true;
console.log(typeof (num + ' ')); //里面加小括號改變運算順序描融,優(yōu)先執(zhí)行小括號內(nèi)部內(nèi)容。
console.log(typeof (isRight + ' '));
其他類型轉(zhuǎn)換為數(shù)值類型:
1:Number()方法
Number()把任意值轉(zhuǎn)換為數(shù)值
var str = 'abc';
var isRight = true;
console.log(Number(str));? //返回結(jié)果是NaN,不是一個數(shù)字
console.log(Number(isRight));? //返回結(jié)果:1衡蚂,計算機true是1
console.log(Number('123')); //字符串123轉(zhuǎn)換為數(shù)字123窿克;
console.log(Number('123abc')); //Number()吧字符串轉(zhuǎn)換成數(shù)值類型的時候,如果字符串中有一個字符不是數(shù)字毛甲,返回NaN年叮。
2:parseInt()方法,parse是解析玻募,把變量解析為int,int是整數(shù)的意思只损。
parseInt()無法轉(zhuǎn)換小數(shù),到小數(shù)點結(jié)束
var str = '123';
var isRight = false;
console.log(parseInt(str));//字符串123轉(zhuǎn)換為數(shù)字123七咧;
console.log(parseInt(isRight));//paresInt無法把布爾類型轉(zhuǎn)換為數(shù)值類型跃惫。返回NaN
var s1 = 'abc';
console.log(parseInt(s1));//返回NaN,paresInt無法把字符串轉(zhuǎn)為數(shù)值。
var s1 = '123abc';
console.log(parseInt(s1)); 返回123艾栋,parseInt在轉(zhuǎn)換字符串時候爆存,如果遇到數(shù)字就會轉(zhuǎn)換數(shù)字,如果遇到非數(shù)字就會返回蝗砾。
var s2 = 'abc123';
console.log(paresInt(s2)); //返回NaN,如果字符串第一個值是非數(shù)字先较,返回NaN.
3:parseFloat()方法?
parseFloat()把數(shù)值轉(zhuǎn)化為浮點數(shù)。
var str = '123.67';
var isRight = true;
console.log(paresFloat(str));?
console.log(paresFloat(isRight)); //返回NaN,無法轉(zhuǎn)換布爾類型悼粮。
var str = '123.12.123abc';
console.log(parseFloat(str)); //解析到第一個點闲勺,第二個點無法解析。
4:取正或者取負扣猫; + -
var num = -5;
console.log(num);
var str = '123';
console.log(+str); //返回123菜循,-號返回-123
字符串如果是123abc返回NaN.可以轉(zhuǎn)換布爾類型。
轉(zhuǎn)換成布爾類型Boolean()
Number和null轉(zhuǎn)換后為false
轉(zhuǎn)換后為false的情況:null undefind ' '空字符串 0 NaN五種情況
其他轉(zhuǎn)換為true.
七:操作符
算數(shù)運算符:
+ - * / % 加 減 乘 除 取余數(shù)
var x = 5; var y = 10;
console.log(x + y);
console.log(x / y);
console.log(x * y);
console.log(x % y) //輸出5
console.log(x / 0) //無窮大
console.log(x % 0) //NaN
一元運算符:
只有一個操作數(shù)的運算符是一元運算符申尤。有兩個操作數(shù)的運算符叫作二元運算符(如:5+6)
前置++? 自身加1? :++5
var num = 5; console.log(++num) //5自身+1輸出6债朵。++num先讓自身+1子眶,然后再返回表達式的結(jié)果。
var num1 = 7;
console.log(num + ++num1); //前置++先自身加1再參與運算序芦,輸出6+8=14
前置--同前置++
后置++? :5++?
先返回表達式的結(jié)果num,然后再對num自身加1
var num = 5;
console.log(num++);//先返回num結(jié)果5臭杰,然后在對num自身加1,所以輸出5
console.log(num); //自身加1之后才會輸出6
var num1 = 7;
console.log(num + num1++); //num返回6+num17=13;
console.log(num1); //表達式輸出完之后num1+1谚中,執(zhí)行結(jié)果是8.
例:
var a = 1; var b = ++a + ++a; console.log() //++a先執(zhí)行自身+1渴杆,然后再返回表達式的結(jié)果,第一個a是2宪塔,第二個++a在第一個++a基礎上再+1磁奖,是3,所以輸出2+3=5某筐;
var a =1; var b = a++ + ++a; console.log(b);//a++先返回表達式結(jié)果1比搭,再執(zhí)行+1,a++返回結(jié)果之后是2南誊,++a在2基礎上再+1身诺,所以輸出1+3=4
var a = 1; var b = a++ + a++; console.log(b);//輸出1+2=3
var a = 1; var b = ++a + a++; console.log(b);第一個a先返回表達式結(jié)果是2,第二個a返回表達式結(jié)果2運算抄囚,輸出2+2=4霉赡;
邏輯運算符:(布爾運算符)
&&(邏輯與):兩個操作數(shù)同時為true,結(jié)果為true,否則都是false,與是并且的意思幔托。是二元運算符
例:var a =true; var b =true; console.log (a && b ); //a等于ture并且b等于true時結(jié)果才是true.
|| (邏輯或):兩個操作符有一個為true,結(jié)果為true,否則為false穴亏,或是或者的意思。 是二元運算符
例:var a =true; var b =true; console.log (a || b ); //a或者b有一個為true,結(jié)果就為true,兩邊都為false時結(jié)果才為false.
! (邏輯非) :取反 是一元運算符
var a = true; console.log ( !a )//對a進行取反重挑,輸出結(jié)果是true.
關系運算符:(比較運算符)
< > >= <= == != === !==?
< > >= <=是比較大小的
var a = 10; var b = 5;?
console.log(a > b)//返回true console.log(a < b)//返回false
= != === !== 是比較相等的
console.log ( a == b );//輸出false
console.log( a !=b);a不等于b,輸出true
-------------------------------------------------------------
var a = 10; var b = '10';
console.log (a == b);//輸出true,先把字符串10轉(zhuǎn)換為數(shù)值再判斷嗓化,兩個等號是判斷值是否相等。
console.log(a === b);//輸出false,三個等號先判斷類型是否一致谬哀,類型不一一致為fase,只有值和類型都一致才返回true.
!=不等于蟆湖,只要判斷值不相等就返回true,
!==,判斷值和類型都不相等才會返回true
賦值運算符
= += -= *= /= %=
var num = 5; // 把5這個常亮賦值給變量num
vae num1 = num * 5; //把運算的結(jié)果賦值給num1
num1 +=5;num1 -=5;//簡化
運算符優(yōu)先級
優(yōu)先級從高到低
1. ( ) 優(yōu)先級最高
2.一元運算符 ++ -- !
3.算數(shù)運算符 先* / %玻粪,后+ -
4.關系運算符 > >= < <=
5.相等運算符 == 隅津!= === !===
6邏輯運算符 先&& 后||
例1:4 >= 6 || '人' != '阿凡達' && !(12 * 2 == 144) && true? ? //返回true
例2:var num = 10;
5 == num / 2 && (2 + 2 * num).toString() === '22'??//返回true
八:流程控制
順序結(jié)構(gòu)
代碼從上到下依次執(zhí)行就是順序結(jié)構(gòu)
分支結(jié)構(gòu)
根據(jù)不同情況劲室,執(zhí)行對應代碼
if (/*表達式條件*/){
//執(zhí)行語句
}else{
//執(zhí)行語句
}
三元運算符:表達式1 ? 表達式2 : 表達式3
switch語句里面相等性判斷是===伦仍,判斷值和類型是否相等。如果不加break會有穿透效果很洋。
循環(huán)結(jié)構(gòu)
重復做一件事情
三種:while, do-whild, for
while語句:當循環(huán)條件為true時充蓝,執(zhí)行循環(huán)體,為false時,結(jié)束循環(huán)谓苟。
while (循環(huán)條件) {
// 循環(huán)體
}
for(初始表達式1官脓;條件表達式2;自增表達式3){
//循環(huán)體
}
九:數(shù)組
數(shù)組可以存儲很多項涝焙,有順序卑笨,很多項形成一個集合Array是一個數(shù)組 的字面量。
var names = ['zs', 'ls', 'ww','zl'仑撞,‘ ’赤兴,‘123’];? //' '里面不算長度
console.log ( names [0] ); //獲取第一項
console.log ( names [1] ); //獲取第二項值
console.log ( names [111] ); //不存在的索引返回undefined
用索/下標可以獲取數(shù)組中的數(shù)據(jù)。數(shù)組中的索引是從0開始
數(shù)組中存儲的數(shù)據(jù)類型可以不一致,可存儲任意類型
console.log (names.length)//獲取數(shù)組長度
console.log ( names [0] )//獲取數(shù)組中第一個元素
console.log ( names [names.length - 1] );? //數(shù)組名.length-1可以獲取數(shù)組中最后一個元素
?names[0] = 'xxx' 修改數(shù)組中的第一個元素隧哮,根據(jù)下標修改桶良。
names[6]='xxx修改不存在的數(shù)組,會給數(shù)組增加一項沮翔。
names[222]='xxx'; 給數(shù)組動態(tài)加入值陨帆,跳過的值是undefined
獲取數(shù)組中的每一項(遍歷數(shù)組)
for (var i = 0; i < nams.length; i++ ) {
console.log(names[i]);
}
反向遍歷數(shù)組
for (var i = names.length - 1; i >=0; i-- ) {
console.log (names[i] )}
給空數(shù)組加值
var scrores = [];
for (var i =0;i < 10;i++) {
scores[i] = i;
}
console.log(scores);
清空數(shù)組:scores.length = 0;