一. JS介紹javascript
1. 定義一個變量的形式: java
var a;程序員
2. Js是前臺語言,用於頁面的交互, 不能操做數據庫es6
PHP,ASP,JSP 能夠操做數據庫, 可以進行增刪改查. Node.js除外正則表達式
3. Js的組成有三個部分數據庫
ECMAScript: JavaScript的語法標準. 包括變量, 表達式, 運算符, 函數, if語句, for語句等等數組
DOM: 操做網頁上元素的API. 好比讓一個盒子移動, 變色, 輪播圖等等.瀏覽器
BOM: 操做瀏覽器部分功能的API. 好比讓瀏覽器自動滾動.dom
二. Js代碼函數
1. Js引入
方法1: 在頁面中能夠直接在body的標籤中放入以下標籤對:
<script type=」text/javascript」>
// js的代碼段
</script>
方法2: 引入js文件
<script type=」text/javascript」 src=」demo.js」><script/>
2.語法
a. js 對縮進 換行 空格不敏感
注意每一條語句末尾都要有分號, 爲了之後壓縮文件
b. 單行註釋用 //單行註釋
多行註釋用 /*多行註釋*/
3. js中輸出信息的方式
a. 彈出警告框: alert語句
<script type="text/javascript」>
alert("哇哈哈");
</script>
b. 控制檯輸出: console.log()
console表示"控制檯", log表示"輸出", 控制檯是程序員調試程序的地方,
程序員常常使用這條語句輸出一些東西來測試程序是否正確
c. 用戶輸入:prompt()語句
prompt()就是專門用來彈出可以讓用戶輸入的對話框, 代碼以下:
<script type="text/javascript">
var a = prompt("今天是什麼天氣???")
console.log(a);
</script>
上面的代碼中,用戶輸入的內容將被傳遞給變量a
prompt()語句中 無論輸入什麼內容, 都是字符串類型.
d. alert 和 prompt的區別:
alert("從前有座山"); //直接使用,不須要變量
var a = prompt("請輸入一個數字"); //必須用變量接收用戶輸入的數值
4. 變量
a. 變量的聲明和賦值
var a = 100;
b. 變量的類型
變量裏面能夠存數字,字符串等. 變量會自動根據存儲內容的類型來決定本身的類型.
數字型:number
若是一個變量裏存放了數字,那麼這個變量就是數值型的
var a = 100; //定義了一個變量, 而且賦值100
console.log(typeof a); // 輸出a 變量的類型, typeof()表示獲取變量的類型
字符串型:string
用單引號 或雙引號括起來的字符
var a = "abc";
var b = "123321";
var c = ""; //空字符串
console.log(typeof a, typeof b, typeof c);
c. 連字符和加號的區別
鍵盤上的+ 多是連字符, 也多是數字的加號
console.log("我"+"愛"+"你"); //連字符, 把漢字連在一塊兒, 輸出:我愛你
console.log("我+愛+你"); // 原樣輸出: 我+愛+你
console.log("我"+521); // 輸出:我521
console.log(1+2+3); // 先計算並輸出結果, 輸出6
總結: 若是兩邊都是數值, 此時是加號, 不然就是連字符(用來鏈接字符串)
d. 變量值的傳遞(賦值)
語句: a = b; //把b的賦值給a, b值不變
e. 變量格式的轉換
parseInt()能夠將字符串轉成數字, 例如parseInt("5");
parseInt()還具備如下的特徵:
帶有自動淨化的功能: 只保留字符串最開頭的數字, 後面的中文自動消失
例如: console.log(parseInt("2018你真帥")); 輸出結果:2018
帶有自動截斷小數的功能:取整, 不是四捨五入
例如:
var a = parseInt(5.8) + parseInt(4.7);
console.log(a); // 輸出:9
var a = parseInt(5.8 + 4.7);
console.log(a); // 輸出:10
三. 數據類型:
數據類型包括:基本數據類型 和 引用數據類型;
基本數據類型是簡單的數據段, 引用數據類型指的是有多個值構成的對象
當咱們把賦值給一個變量的時候, 解析器首先要確認的就是這個值是基本類型仍是引用類型
1. 基本數據類型:
a. number
var a = 123;
console.log(typeof a) //輸出number
//特殊狀況: infinity(無限大)是number類型
var a1 = 5/0;
console.log(a1) // 顯示 infinity
console.log(typeof a1) //number
b. string
var str = "123"
console.log(typeof str) // string
c. boolean
var b1 = false;
console.log(typeof b1) //boolean
d. null
var c1 = null; //空對象
console.log(typeof c1) //object
e. undefined
var d1; //只有聲明,沒有賦值,表示變量未定義
console.log(typeof d1) //undefined
2. 引用數據類型
Function
Object
Array
String
Date
四. 運算符
1. 賦值運算符
=, +=, -=, *=, /=, %=
2. 算數運算符
+, -, *, /, %, ++, --
3. 比較運算符
==, ===(等同於:值和類型均相等), !=, !==, >, <, >=, <=
注意: ==(!=)比較的是值, ===(!==)比較的是值和數據類型. 例如:
var s = "1";
var n = 1;
console.log(s == n); //true
console.log(s === n); //false
4. 字符串拼接和字符串運算的特殊狀況
a. 字符串類型的數值 和 數值類型相減 結果是數值. 例如:
var a = "3";
var b = 1;
console.log(a-b); //1
b. NaN(not a number)是一個number的類型
var b1 = "one";
var b2 = "two";
ret = b1*b2
console.log(ret, typeof(ret)) //NaN number
c. 字符串拼接
var name = "伊拉克";
var am = "美軍";
//字符串拼接
var str = "3月20日," + name + "戰爭爆發,以" + am + "爲主的部隊擊潰了軍隊";
console.log(str);
//es6 的模板字符串, tab鍵上面的反引號``, 添加變量名使用${變量名}
var str1 = "3月20日,${name}戰爭爆發,以${am}爲主的部隊擊潰了軍隊";
console.log(str1);
五. 數據類型轉換
1. 數值類型轉字符串類型
a. 隱式轉換
var n1 = 123;
var n2 = "123";
var n3 = n1+n2;
console.log(n3); // 123123
console.log(typeof n3); //string
b.強轉換的兩種方法: String(), .toString()
var n1 = 123;
var str1 = String(n1);
console.log(str1, typeof str1); //123 string
var num = 234;
str2 = num.toString()
console.log(str2, typeof str2); //123 string
2. 將字符串類型轉換成數值類型: Number(), parseInt(), parseFloat()
var strNum = "789.123wasdfj"
var str = "666"
console.log(Number(strNum),Number(str)) //NaN 666
console.log(parseInt(strNum)) //789
console.log(parseFloat(strNum)); //789.123
3. 任何數據類型均可以轉成boolean類型
//不是0的都是真
var b1 = "123"; //true
var b2 = 0; //false
var b3 = -123; //true
var b4 = Infinity; //true
var b5 = NaN; //false
var b6; //false
var b7 = null; //false
六. 流程圖控制
1. if, if-else, if-else if-else
a. if語句, 例如:
var ji = 20;
if (ji >= 10){
console.log("恭喜你,吃雞成功")
}
console.log("hello world"); //這裏的代碼也會執行
b. if-else例句:
var ji = 20;
if (ji >= 10){
console.log("恭喜你吃雞成功")
}else{
console.log("很遺憾") //這行代碼不執行
}
c. if-else if-else例句:
if(true){
//知足條件執行這行代碼
}else if(true){
//知足條件執行這行代碼
}else if(true){
//知足條件執行這行代碼
}else{
//知足條件執行
}
2. 邏輯與(&&), 邏輯或(||)
a. 模擬若是總分 > 400分 而且數學成績 >89 分就會被清華錄取,例如
var sum = 405;
var math = 90;
if(sum > 400 && math >89){
console.log("清華大學錄取")
}else{
alert("未被錄取")
}
b. 模擬若是總分 > 500 分 或者 英語大於 85分 被複旦大學錄取,例如
var sum = 530;
var english = 90;
if(sum > 500 || english >85){
console.log("被複旦大學錄取")
}else{
aler("未錄取")
}
c. switch語句
var game_score = "better";
switch(game_score){
case "good":
console.log("玩得很好")
break; // break表示退出, 若是不寫就直接到碰見下一個break才退出
case "better":
console.log("玩的通常般")
break;
case "best":
console.log("恭喜吃雞")
break;
default:
console.log("很遺憾")
}
4. while循環, do-while循環
a. while循環 例如:
var i = 1; //初始化循環變量
while(i <= 9){ //判斷循環條件
console.log(i);
i = i+1; //改變循環條件
}
練習:1-100之間全部2的倍數
var i = 1;
while(i <= 100){
if(i%2 == 0){
console.log(i)
}
}
b. do-while循環
//無論有沒有知足while中的條件, do裏面的代碼都會先執行一次
var i = 3; //初始化循環變量
do{
console.log(i)
i++; //改變循環條件
}while(i < 10) //判斷循環條件
5.for循環
for(var i=1; i<=10; i++){
console.log(i)
}
練習:1-100 之間全部的數的和打印出來
sum = 0
for (var i=1; i<=100; i++){
sum += 1;
}
console.log(sum);
練習:在瀏覽器中輸出直角三角形
for(var i = 1; i <= 6; i++){
for(var j=1; j<=i; j++){
document.write("*");
}
document.write("<br>");
}
練習: 瀏覽器中輸出等腰直角三角形
for(var i = 1, i<=6; i++){ //控制行數
//控制空格數
for(var s=i; s<6; s++){
document.write(" ")
}
for(var j=1; j<=2*i-1; j++){
document.write("*")
}
document.write("<br>")
}
七. 經常使用內置對象
js中全部的事物都是對象: 字符串,數值, 數組, 函數......此外js容許自定義對象
js提供多個內置對象: String, Date, Array等等
對象是帶有屬性和方法的特殊數據類型
1. 數組對象
數組的建立形式有2種方式:
a. 字面量方式建立, 推薦使用
var colors = ["red","green","pink"];
b. 構造函數建立, 使用new關鍵詞
var colors = new Array();
數組的賦值
var arr = [];
//經過下標進行賦值
arr[0] = 123;
arr[1] = "哈哈哈";
arr[2] = "嘿嘿";
數組的經常使用方法和示例
方法或者屬性 描述
concat() 鏈接兩個或多個數組,而且返回結果
var north = ['北京','山東','天津'];
var south = ['東莞','深圳','上海'];
var newCity = north.concat(south);
console.log(newCity); // ["北京", "山東", "天津", "東莞", "深圳", "上海"]
join() 把數組的全部元素放入一個字符串裏
var score = [98,78,76,100,0];
var str = score.join('|');
console.log(str); // 98|78|76|100|0
toString() 把數組轉換成字符串, 並返回結果
str1 = score.toString();
console.log(str1); // "98,78,76,100,0"
slice(start,end)選取數組的一部分,並返回一個新的數組
var arr = ['張三','李四','王文','趙六'];
var newArr = arr.slice(1,3);
console.log(newArr); // ["李四", "王文"]
pop() 刪除數組的最後一個元素, 並返回刪除的元素
var color2 = ['black', 'pink', 'deep blue'];
el = color2.pop();
console.log(el); //deep blue
console.log(color2); //['black', 'pink']
push() 向數組末尾添加一個或多個元素, 並返回新的長度
arr.push('小馬哥');
console.log(arr); // ["張三", "李四", "王文", "小馬哥"]
reverse() 反轉數組的元素順序
var names = ['alex','wusir','xiaoma','angle'];
names.reverse();
console.log(names); // ["angle", "xiaoma", "wusir", "alex"]
sort() 對數組的元素進行排序 按字母從a--z
var names = ['alex','wusir','xiaoma','angle'];
names.sort(names);
console.log(names) // ["alex", "angle", "wusir", "xiaoma"]
shift() 刪除並返回數組的第一個元素
var color2 = ['black', 'pink', 'deep blue'];
el = color2.shift();
console.log(el); //black
console.log(color2);//{'pink', 'deep blue']
unshift() 向數組的開頭添加一個或者多個元素,並返回新的長度
var color2 = ['black', 'pink', 'deep blue'];
new_length = color2.unshift('hot pink');
console.log(color2); //{['hot pink','black','pink', 'deep blue']
console.log(new_length); // 4
Array.isArray 判斷對象是否爲數組
var color2 = ['black', 'pink', 'deep blue'];
console.log(Array.isArray(color2)); //true
length 數組的一個屬性,設置或返回數組元素的個數
var color2 = ['black', 'pink', 'deep blue'];
console.log(color2.length); //3
2. 字符串對象
charAt() 返回指定索引的字符串
var str = 'hello';
var charset = str.charAt(1);
console.log(charset); // e
concat() 返回字符串,表示兩個或多個字符串的拼接
var str1 = 'al';
var str2 = 'ex';
console.log(str1.concat(str2,str1)); // alexal
replace(a,b) 字符串b 替換a
var a = '1234567755';
var newStr = a.replace('4567','****');
console.log(newStr); // 123****755
indexOf() 返回某個指定的字符串值在字符串中首次出現的位置,若是沒有返回-1
var str = 'world';
console.log(str.indexOf('o')); // 1
console.log(str.indexOf('a')); // -1
slice() 返回start到end -1之間的字符串, 索引從0開始
var str = '正能量';
console.log(str.slice(1,2)); // 能
split() 把字符串分割爲字符串數組
var str = '個人天呢,a你在說什麼呢?a哈哈哈';
console.log(str.split('a')); // ["個人天呢,", "你在說什麼呢?", "哈哈哈"]
substr(start,end)字符串截取, 顧頭不顧尾
var str = '個人天呢,a是嘛,你在說什麼呢?a哈哈哈';
console.log(str.substr(0,4)); // 個人天呢
toLowerCase() 返回一個新的字符串,該字符串字母都變成了小寫
var str = 'XIAOMAGE';
console.log(str.toLowerCase()); // xiaomage
toUpperCase() 返回一個新的字符串,字符串的全部字母變大寫
var str = 'xiaomage';
console.log(str.toUpperCase()); // XIAOMAGE
match() 查找到一個或多個正則表達式的匹配
search() 查找與正則表達式相匹配的值
toString() 將number類型轉換成字符串類型
var num = 1234.1234;
var str = num.toString();
console.log(str);
3. 日期對象
建立日期對象, 只有構造函數這一種方式, 使用new關鍵字
var myDate = new Date();
經常使用語法:
Date() 根據當地時間返回 日期和時間
console.log(Date());//Thu Sep 27 2018 10:07:43 GMT+0800 (中國標準時間)
getDate() 根據本地時間返回指定日期對象的月份中的第幾天(1-31)
console.log(myDate.getDate());//27
getMonth() 根據本地時間返回指定日期對應的月份(0-11)
#注意 0表示1月
console.log(myDate.getMonth());//8
getFullYear() 根據本地時間返回指定日期對象的年份(返回4位數)
console.log(getFullYear());//2018
getDay() 根據本地時間返回指定日期對象的星期幾的第幾天(0-6)
#0表明 星期日
console.log(getDay());//4
getHours() 根據本地時間對象返回指定時間對象的小時(0-23)
console.log(myDate.getHours())//14
getMinutes() 根據本地時間對象返回指定時間對象的分鐘(0-59)
console.log(myDate.getMinutes())//8
getSeconds() 根據本地時間對象返回指定時間對象的秒(0-59)
console.log(myDate.getSeconds())//24
toLocalString() 返回本地時間
console.log(myDate.toLocalString())
#使用循環定時器 在頁面中顯示動態時間
setInterval(function(){
document.getElementById("timer").innerText = Date().toLocalString();
},1000)
4. math(算數)對象
#經常使用內置對象
Math.floor() 向下取整,地板函數
var x = 1.789;
var new_x = Math.floor(x);
console.log(new_x)//1
Math.ceil() 向上取整,天花板函數
var x = 1.789;
var new_x = Math.ceil(x);
console.log(new_x)//2
Math.max() 取多個值中的最大值
console.log(Math.max(3,2,1,4,5,2))//5
Math.min() 取多個數的最小值
console.log(Math.min(3,2,1,4,5,2))//1
Math.random() 獲取0-1之間的隨機數
console.log(Math.random())//0.669789427291309
#獲取100--300之間的隨機數
min---max 之間的隨機數: min+Max.random()*(max-min)
var start = 100;
var end = 300;
var num = start+Math.random()*(end-start);
console.log(Math.floor(num))
八. 函數
函數的定義:函數就是將一些語句進行封裝,而後經過調用的形式,執行這些語句
1. 函數的定義
function 函數名(){
//函數體
}
2. 函數的調用
函數名();
3. 函數的參數
函數定義時的形參
function f(arg1,arg2){
console.log(arg1+arg2);
};
函數定義時的實參
f(100,200);
4. 返回值
function f(arg1,arg2){
return arg1+arg2;
}