前端知識之JavaScript知識
阿新 • • 發佈:2018-10-17
nth print輸出 lis ear ast per 英文字母 cstring sunday
前端之javaScript
JavaScript
- html :展示文檔內容的
- css:控制文檔的顯示效果
- js:控制文檔的交互效果
- 是腳本語言
- 一種輕量級的編程語言
- 可插入html頁面的編程代碼
js導入方式
直接用Script標簽內些代碼
<script> // 在這裏寫你的JS代碼 </script>
引入額外的js文件
<script src="myscript.js"></script>
js語法基礎
- 語句以;結束,不講究縮進
- 變量聲明要加var關鍵字
- $可以作為變量名
js中的數據類型
數字(number)
- NaN
- parseInt
- parseFloat
字符串(string)
字符串常用方法
方法 說明 .length 返回長度 .trim() 移除空白 .trimLeft() 移除左邊的空白 .trimRight() 移除右邊的空白 .charAt(n) 返回第n個字符 .concat(value, ...) 拼接 .indexOf(substring, start) 子序列位置 .substring(from, to) 根據索引獲取子序列 .slice(start, end) 切片 .toLowerCase() 小寫 .toUpperCase() 大寫 .split(delimiter, limit) 分割
字符串拼接一般使用+號進行連接
boolean(布爾值)
- 0,‘’,null,undefined,NaN都是false
null
- 表示值為空,多為手動將一個變量置為空
undefined
- 表示變量只聲明,單沒有賦值
- 函數沒有明確指定返回值,默認返回的就是undefined
object
數組(Array)類似Python中的列表
var a1 = [11, 22, 33] console.log(a[1]);//輸出22
常用方法
方法 說明 .length 數組的大小 .push(ele) 尾部追加元素 .pop() 獲取尾部的元素 .unshift(ele) 頭部插入元素 .shift() 頭部移除元素 .slice(start, end) 切片 .reverse() 反轉 .join(seq) 將數組元素連接成字符串 .concat(val, ...) 連接數組 .sort() 排序 .forEach() 將數組的每個元素傳遞給回調函數 .splice() 刪除元素,並向數組添加新元素。 .map() 返回一個數組元素調用函數處理後的值的新數組
自定義對象(類似Python中的字典)
var o = {‘name‘: ‘王帥‘, ‘age‘: 18}
typeof(檢測類型)
- typeof 變量名
運算符
算術運算符
- +、-、*、%、++指加1、--指-1、
比較運算符
>、<、!=、
== 弱等於指只判斷值是不是相等,與類型無關
2 == ‘2‘//ture
=== 強等於 即判斷值也判斷類型
邏輯運算
- && 與、|| 或,!非
- Python中的非為not
賦值運算
- =、+=、-=、*=、/=
js流程控制
if-else、if-else if-else
var a = 10; if (a > 5){ console.log("yes");//類似print輸出 }else { console.log("no"); }
for
for (var i=0;i<10;i++) { console.log(i); } //下列為死循環,了解 for (;;){ console.log("死循環"); }
while
var i = 0; while (i < 10) { console.log(i); i++; }
switch
var day = new Date().getDay();//導入時間模塊 switch (day) { case 0: console.log("Sunday"); break; case 1: console.log("Monday"); break; default: console.log("...") }
三元運算
var a = 1; var b = 2; var c = a > b ? a : b
js函數
基本函數的定義
- 註意事項:
- 參數:傳多,傳少都不會報錯,沒有傳值相當於傳了undefined
- 返回值:如果返回有多個值,默認返回最後一個
- 註意事項:
定義一個函數
//定義一個函數 function f1() { console.log("Hello world!"); } //執行這個函數 f1()
帶返回值的函數
function sum(a, b){ return a + b; } sum(1, 2); // 調用函數
匿名函數
var sum = function(a, b){ return a + b; } sum(1, 2);
立即執行函數
(function(a, b){ return a + b; })(1, 2);
js內置對象和方法
創建對象
var person=new Object(); // 創建一個person對象 person.name="Alex"; // person對象的name屬性 person.age=18; // person對象的age屬性
date 時間
//方法1:不指定參數 var d1 = new Date(); console.log(d1.toLocaleString()); //方法2:參數為日期字符串 var d2 = new Date("2004/3/20 11:12"); console.log(d2.toLocaleString()); var d3 = new Date("04/03/20 11:12"); console.log(d3.toLocaleString()); //方法3:參數為毫秒數 var d3 = new Date(5000); console.log(d3.toLocaleString()); console.log(d3.toUTCString()); //方法4:參數為年月日小時分鐘秒毫秒 var d4 = new Date(2004,2,20,11,12,0,300); console.log(d4.toLocaleString()); //毫秒並不直接顯示 var d = new Date(); //getDate() 獲取日 //getDay () 獲取星期 //getMonth () 獲取月(0-11) //getFullYear () 獲取完整年份 //getHours () 獲取小時 //getMinutes () 獲取分鐘 //getSeconds () 獲取秒 //getMilliseconds () 獲取毫秒 //getTime () 返回累計毫秒數(從1970/1/1午夜)
json對象 與Python中類似
var str1 = ‘{"name": "Alex", "age": 18}‘; var obj1 = {"name": "Alex", "age": 18}; // JSON字符串轉換成對象 var obj = JSON.parse(str1); // 對象轉換成JSON字符串 var str = JSON.stringify(obj1);
RegExp正則對象
註意事項:
- 正則表達式不能有空格
- 匹配模式,常用g(全局匹配,找到所以的匹配,而不是只找一個)和i模式(忽略大小寫)
//RegExp對象 //創建正則對象方式1 // 參數1 正則表達式(不能有空格) // 參數2 匹配模式:常用g(全局匹配;找到所有匹配,而不是在第一個匹配後停止)和i(忽略大小寫) // 用戶名只能是英文字母、數字和_,並且首字母必須是英文字母。長度最短不能少於6位 最長不能超過12位。 // 創建RegExp對象方式(逗號後面不要加空格) var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$"); // 匹配響應的字符串 var s1 = "bc123"; //RegExp對象的test方法,測試一個字符串是否符合對應的正則規則,返回值是true或false。 reg1.test(s1); // true // 創建方式2 // /填寫正則表達式/匹配模式(逗號後面不要加空格) var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/; reg2.test(s1); // true // String對象與正則結合的4個方法 var s2 = "hello world"; s2.match(/o/g); // ["o", "o"] 查找字符串中 符合正則 的內容 s2.search(/h/g); // 0 查找字符串中符合正則表達式的內容位置 s2.split(/o/g); // ["hell", " w", "rld"] 按照正則表達式對字符串進行切割 s2.replace(/o/g, "s"); // "hells wsrld" 對字符串按照正則進行替換 // 關於匹配模式:g和i的簡單示例 var s1 = "name:Alex age:18"; s1.replace(/a/, "哈哈哈"); // "n哈哈哈me:Alex age:18" s1.replace(/a/g, "哈哈哈"); // "n哈哈哈me:Alex 哈哈哈ge:18" 全局匹配 s1.replace(/a/gi, "哈哈哈"); // "n哈哈哈me:哈哈哈lex 哈哈哈ge:18" 不區分大小寫 // 註意事項1: // 如果regExpObject帶有全局標誌g,test()函數不是從字符串的開頭開始查找,而是從屬性regExpObject.lastIndex所指定的索引處開始查找。 // 該屬性值默認為0,所以第一次仍然是從字符串的開頭查找。 // 當找到一個匹配時,test()函數會將regExpObject.lastIndex的值改為字符串中本次匹配內容的最後一個字符的下一個索引位置。 // 當再次執行test()函數時,將會從該索引位置處開始查找,從而找到下一個匹配。 // 因此,當我們使用test()函數執行了一次匹配之後,如果想要重新使用test()函數從頭開始查找,則需要手動將regExpObject.lastIndex的值重置為 0。 // 如果test()函數再也找不到可以匹配的文本時,該函數會自動把regExpObject.lastIndex屬性重置為 0。 var reg3 = /foo/g; // 此時 regex.lastIndex=0 reg3.test(‘foo‘); // 返回true // 此時 regex.lastIndex=3 reg3.test(‘xxxfoo‘); // 還是返回true // 所以我們在使用test()方法校驗一個字符串是否完全匹配時,一定要加上^和$符號。 // 註意事項2(說出來你可能不信系列): // 當我們不加參數調用RegExpObj.test()方法時, 相當於執行RegExpObj.test("undefined"), 並且/undefined/.test()默認返回true。 var reg4 = /^undefined$/; reg4.test(); // 返回true reg4.test(undefined); // 返回true reg4.test("undefined"); // 返回true
Math對象(理解)
調用方式
- Math.abs(-5) 來調用
abs(x) 返回數的絕對值。 exp(x) 返回 e 的指數。 floor(x) 對數進行下舍入。 log(x) 返回數的自然對數(底為e)。 max(x,y) 返回 x 和 y 中的最高值。 min(x,y) 返回 x 和 y 中的最低值。 pow(x,y) 返回 x 的 y 次冪。 random() 返回 0 ~ 1 之間的隨機數。 round(x) 把數四舍五入為最接近的整數。 sin(x) 返回數的正弦。 sqrt(x) 返回數的平方根。 tan(x) 返回角的正切。
前端知識之JavaScript知識