1. 程式人生 > 其它 >前端知識之JS(javascirpt)

前端知識之JS(javascirpt)

目錄

JS簡介

全稱JavaScript 是一種具有函式優先的輕量級、解釋型或即時編譯的程式語言 它是一門前端工程師的程式語言

JS基礎

1.註釋語法

1. 註釋語法
	//	單行註釋
	/*多行註釋*/

2.引入JS的做種方式

  1. head內script標籤內編寫
  2. head內script標籤src屬性引入外部js資源
  3. body內最底部通過script標籤src標籤屬性引入外部就是資源(最常用)

PS:注意頁面的載入是從上往下的 所以操作標籤js程式碼一定要等待標籤載入完畢在執行才可以正產執行

3.結束符號

​ 分號(很多時候不寫也沒問題)

變數與常量

  1. pycharm建立檔案或者html檔案(適合編寫較為複雜的js程式碼)
  2. 瀏覽器提供編寫js程式碼的環境

JavaScript的變數可以使用_、數字、字母、$組成 不能以數字開頭

在js中宣告變數需要使用關鍵字

var
	var name = 'jason';
let
	let name = 'tony';
	ps:let是ECMA6新語法 可以在區域性定義變數不影響全域性
在js中宣告常量也需要使用關鍵字
const
	const pi = 3.14;

基本資料型別

在js中檢視資料型別的方式 typeof

1.數字型別(Number)

在js中整型與浮點型不分家 都叫Number

NaN也屬於數值型別 意思是:不是一個數字(Not A Number)

2.字元型別(string)

單引號		'jason'
雙引號		"jason"
模板字串	`jason`
let name1 = 'jason'
let age1 = 18
underfined
let desc = `my name is ${name1} my age is ${age1}`
console.log(desc);	// 得到my name is jason my age is 18

1.字串拼接推薦使用加號

var a = 'hello';
var b = 'world';
var c = a + b;
consle.log(c); // 得到hellworld

2.常見內建方法

方法 說明
.toLowerCase() 小寫
.toUpperCase() 大寫
.split(delimiter,limit) 分割
.length 返回長度
.trim() 移除空白
.trimLeft() 移除左邊的空白
.trimRight() 移除右邊的空白
.charAt(n) 返回第n個字元
.concat(value,...) 拼接
.indexOf(substring,start) 子序列位置
.substring(from,to) 根據索引獲取子序列
.slice(start,end) 切片

3.布林型別(Boolean)

js裡面的布林值與Python不同

js是純小寫 而python中是首字母大寫

4.null和underfined

null表示值是空的 一般在需要指定或清空一個變數是才會使用 如 name = null;
underfined表示當宣告一個變數但未初始化 該變數的預設值是underfined 且函式無明確的返回值時 返回的也是undefined

5.物件(object)

物件之陣列(Array)>>>: 類似於python中的列表

let l1 = []

物件之自定義物件(object)>>>: 類似於python的字典

let d1 = {'name':'jason',}
let d2 = new.object();

運算子

1. 算術運算子

+ - * / ++(自增1) --(自減1)
var x=10;
var res1=x++;	加號在後面	先賦值後自增
var res2=++x;	加號在前面	先自增後賦值

2. 比較運算子

!=(值不等 弱) ==(值相等 弱) ===(值相等 強) !==(值不等 強)
如:
A	1 == "1"	// true 弱相等
B	1 === "1"	// false 強等於
A 上面這張情況出現的原因在於JS是一門弱型別語言(會自動轉換資料型別),所以當你用兩個等號進行比較時,JS內部會自動先將
B 數值型別的1轉換成字串型別的1再進行比較,所以我們以後寫JS涉及到比較時儘量用三等號來強制限制類型,防止判斷錯誤

3. 邏輯運算子

	&&(與)	||(或)	!(非)

流程控制

if判斷

  1. 單if分支
if (條件){
    條件成立的子程式碼
}
  1. if...else分支
if(條件){
    條件成立執行的程式碼
}else{
    條件不成立執行的程式碼
}
如:
var a = 10;
if (a > 5){
  console.log("yes");
}else {
  console.log("no");
}
  1. if...else if...else分支
if(條件1){
    條件1成立執行的程式碼
}else if(條件2){
    條件1不成立條件2執行的程式碼
}
else{
    條件1和條件2都不成立執行的程式碼
}
如:
var a = 10;
if (a > 5){
  console.log("a > 5");
}else if (a < 5) {
  console.log("a < 5");
}else {
  console.log("a = 5");
}
  1. 如果分支結構中else if很多還可以考慮使用switch語法
switch(條件){
    case 條件1:
        條件1成立執行的程式碼;
        break; //如果沒有break會基於某個case一直執行下去
    case 條件2:
        條件2成立執行的程式碼;
        break;
    case 條件3:
        條件3成立執行的程式碼;
        break;
    case 條件4:
        條件4成立執行的程式碼;
        break;
    default:
        條件都不滿足執行的程式碼
}

如:
var day = new Date().getDay();
switch (day) {
  case 0:
  console.log("Sunday");
  break;
  case 1:
  console.log("Monday");
  break;
default:
  console.log("...")
}

for迴圈

for(起始條件;迴圈條件;條件處理){
    迴圈體程式碼
}
for(let i=0;i<10;i++){
    consle.log(i)
}
let res = {'name':'jason','age':18}
for(let k in dd){
    conlse.log(k)
}

while迴圈

while(迴圈條件){
    迴圈體程式碼
}
var i = 0;
while (i<10) {
    console.log(i)
}

三元運算

var a = 1;
var b = 2;
var c = a > b ? a : b
//這裡的三元運算順序是先寫判斷條件a>b再寫條件成立返回的值為a,條件不成立返回的值為b;三元運算可以巢狀使用;
var a = 10,b = 20;
var x = a > b ?a : (b=="20")?a:b;

函式

  1. JS中函式的形參與實個數可以不對應 傳少了就是underfined 傳多了不用
  2. 函式體點中有一個關鍵字arguments用來接收所有的實參
  3. 函式的返回值如果有多個需要自己處理成一個整體
function 函式名(形參){
    //註釋
    函式體程式碼
    return 返回值
}

匿名函式

var s1 = function(a,b){
    return a + b;
}

箭頭函式

var f = v => v;
var f = function(v){
    return v;
}

var f = () => 5;
var f = function(){return 5};

var sum = (num1,num2) => num1 + num2;
var sum = function(num1,num2){
    return num1 + num2;
}

內建物件

Date日期物件

var d = new Date();
//getDate()		獲取日
//getDay()		獲取星期
//getMonth()	獲取月(0~11)
//getFulYear()	獲取完整月份
//getYear()		獲取年
//getHours()	獲取小時
//getminutes()	獲取分鐘
//getSeconds()	獲取秒
//getMillseconds()	獲取毫秒
//getTime()		返回累計毫秒數(從1970/1/1午夜)

JSON物件

let dd = {name: 'jason',age: 18}
JSON.stringify(dd)	//序列化
JSON.parse  //反序列化

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正則表示式物件

var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
Var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;
1.全域性模式的規律
	lasrtIndex
2.test匹配資料不傳 預設傳underfined