JS·基礎(一)

·總結一些JS的一些基礎供參考

數據類型

對象

1· 對象特徵:

  1. 對象由鍵值對組成node

  2. 鍵值對由逗號隔開json

  3. 鍵值對由屬性名和屬性值組成數組

  4. 屬性名和屬性值用冒號隔開瀏覽器

  5. 前面的是屬性名,後面的是屬性值bash

  6. 對象沒有length屬性app

console.log(a.length);//undefined
複製代碼

2·獲取某個屬性名對應的屬性值

  1. 對象名、屬性值
var obj={a:1,b:2,c:"zhufeng",1:100}

console.log(obj.a);

console.log(obj["a"]);
複製代碼
  1. 新增鍵值對
var obj={a:1,b:2,c:"zhufeng",1:100}

obj.d="培訓";

obj["d"]="培訓";

console.log(obj);
複製代碼
  1. 修改鍵值對

若是沒有就算新加,有就是修改

var obj={a:1,b:2,c:"zhufeng",1:100}

obj.c="培訓";

obj["c"]="北京";

console.log(obj);
複製代碼
  1. 刪除鍵值對
delete + 對象名,屬性名

var obj={a:1,b:2,c:"zhufeng",1:100}

delete obj.c;

console.log(obj);
obj.a若是放在等號的左邊,那麼是被賦值或修改;放在等號的右邊,是在獲取賦值

obj.a=10;
obj.a=obj.b
複製代碼
  1. 只要是以值存在的必定是一個具體的數據類型值;

放在等號後面或者對象屬性名冒號的後面必定是值;

var obj={a:1,b:2,c:"zhufeng",1:100}

var d=19;

var obj={a:1,b:"zfpx",c:d};

obj.a=11;

obj.a=a;
複製代碼

number

number:整數 小數 NaN;

NaN:不是一個數字,可是number類型的;

  1. Number:把其餘數據類型的值強制轉換爲number類型
var  a=Number("213");//213

var  a=Number("213px");//NaN

var  a=Number(false);//true=1  false=0

var  a=Number(false);//null=0  undefined=NaN

複製代碼
  1. isNaN:用來判斷是不是一個非有效數字的方法,若是是有效數字返回false,不是返回true;dom

  2. isNaN 執行時先默認調用number方法,把值轉換爲number類型;而後再判斷異步

console.log(isNaN(19));false;

console.log(isNaN(NaN));true;
複製代碼
  1. parseInt:把字符串轉成數字,從左到右依次識別,直到遇到一個非有效數字爲止,把識別到的以數字形式返回
console.log(parseInt("12px"));12;

console.log(parseInt("12px12"));12;

console.log(parseInt("px12"));NaN;
複製代碼
  1. parseFloat:比parseInt多識別一位小數點
console.log(parseFloat("12.66px"));12.66

console.log(parseFloat("12.66.66px"));12.66
複製代碼
  1. toFixed:保留小數點位數,返回一個 字符串,而且進行了四捨五入
var num =12.8998;

// number.toFixed(保留的位數)
199.22222.toFixed(3);

console.log(num.toFixed(2));//199.200
複製代碼

基本數據類型和引用數據類型

  1. 基本數據類型: number string boolean null undefined函數

  2. 引用數據類型:對象數據類型和函數數據類型字體

  3. 對象數據類型: 對象{} 數組[] 正則 Math Date的實例...

  4. 函數數據類型: 函數類

  5. 基本和引用區別:

  6. 基本數據類型操做是值

  7. 引用數據類型操做的是空間地址

  8. 基本數據類型存儲到棧內存中

  9. 引用數據類型都存儲到堆內存中

var  num = 100;
    var  obj = {};// obj 存儲的是一個空間地址;
    var  arr = [];
複製代碼

js數據類型檢測

typeof:檢測數據類型的運算符

// 用typeof檢測數據類型

console.log(typeof 100);  // "number"

console.log(typeof "zhufeng");   //"string"

console.log(typeof true);  //"boolean"

console.log(typeof null); //"object"

console.log(typeof {});  //"object"

console.log(typeof []); //"object"

console.log(typeof function); //"function"

console.log(typeof undefined); //"undefined"
複製代碼

instanceof:檢測某個實例是否屬於這類

constructor:獲取當前實例的構造器

Object.prototype.toString.call:獲取當前實例的所屬類信息

  1. 使用typeof檢測,返回的結果是一個字符 串,字符串中包含的內容證實了值是屬於 什麼樣類型

數組

引用數據類型:空間類型

  1. 有lenght和索引

數組是由數組成員組成,數組成員用逗號隔開

  1. 有length:屬性值表明數組成員的個數

  2. 索引:表明數組成員的屬性名從0開始

var arr=[1,2,3,4,100];

console.log(arr.length);
複製代碼
  1. 有索引的;索引從0開始;依次遞增1;
var arr=[1,2,3,4,100];

console.log(arr[2]);
複製代碼

push

  1. push:在數組末尾追加元素

  2. push方法的參數:要追加到數組後面的元素;能夠是多個;用逗號隔開

  3. 須要傳參

  4. push方法的返回值:執行完成,新數組長 度

var arr =[1,2];

arr.push("a"); // [1,2,"a"]

console.log(arr);
複製代碼

pop

  1. pop:從數組末尾去掉一個元素

  2. pop:方法沒有參數

  3. pop:返回值;刪除末尾數組元素後的數組

  4. pop方法原數組發生變化

var arr=["a","n",1,"m"]; //length=4

var ret=arr.pop();

console.log(arr);
複製代碼

unshift

  1. unshift:在數組的前面添加元素

  2. unshift:方法參數:要添加的值;能夠爲 多個參數

  3. unshift:返回值新數組長度,lenght

var arr=[1,2,3,4];

arr.unshift(0);

console.log(arr)
複製代碼

shift

  1. shift:從數組的前面刪除一第個元素

  2. shift方法沒有參數

  3. shift方法返回值:被刪除的數組的第一項成員

var arr=[1,2,3,4,5];
 
arr.shift(1);

console.log(arr);
複製代碼

slice

  1. slice:截取數組

  2. slice:方法參數:若是是兩個參數;第一個參數是開始位置的索引;

  3. 第二個參數是結束爲止的索引;不包括第二個參數的位置

  4. slice返回值:截取的那一部分數據,以數組的方式返回

  5. 若是是一個參數參數是開始位置的索引截取到整個數組的最後一位

  6. 參數若是是負數;數組的長度+負數獲得的值;數組的下標

  7. 沒有參數複製一份數組

  8. 原有數組不發生改變

  9. 支持負數

var arr=[1,2,3,4,5,6,7];

arr.slice(2,5);

console.log(arr);
複製代碼

splice

  1. splice:刪除原有數組的項第一個參數;開始位置的索引刪除的長度;返回值是刪除的項;以數組的形式返回

  2. 替換/修改第一個參數,開始位置的索引

  3. 第二個參數,是刪除的長度,剩下的參數;被添加到原來開始位置索引的數組元素

  4. 添加:第二個參數爲0(不刪除),而後再原有的位置;添加後面參數元素的值。

  5. 原來的數組發生了變化

  6. 參數爲0所有刪除

var arr=["a","b","c","d","e","f"];

arr.splice(2,2);

console.log(arr);
複製代碼

sort

  1. sort:排序 只能排相同位數的數組

  2. 對數組進行排序

  3. 參數無關緊要

  4. 沒有參數 只能排相同位數

var ary=[1,23,435,46,34,653];

ary.sort(function(a,b){return a-b}) 從小到大

ary.sort(function(a,b){return b-a}) 從大到小
複製代碼

reverse

  1. reverse:將數組倒序排列

  2. 不須要參數

  3. 返回值是數組倒序以後的數組

  4. 原有數組發生改變

indexOf

  1. indexOf:用來獲取當前數組成員第一次出現的索引位置

  2. 須要參數;若是數組成員不存在這一項返回-1

  3. 若是參數存在 返回當前項索引 不存在返回-1

  4. 原有數組不發生改變

  5. 0返回也是-1

lastIndexOf

  1. lastIndexOf:用來效驗數組成員最後一次出現的索引位置

  2. 須要參數 若是不存在返回-1

  3. 返回最後一次的索引或者是不存在就返回-1

  4. 原有數組不發生改變

  5. 0返回也是-1

concat

  1. concat:數組的拼接

  2. 須要參數 沒有參數就是複製同樣的參數

  3. 返回是拼接後的數組

  4. 原有數組不變

join

  1. join:按照指定的字符進行拼接成一個字符串

  2. 須要參數 若是不寫 默認是逗號隔開

  3. 返回一個鏈接後的字符串

  4. 原有數組不變

forEach

  1. forEach:用來遍歷數組每一項

  2. 須要參數 一、第一個是數組的每一項 二、數組成員的索引 三、要循環的數組

  3. 返回的是undefined

  4. 原有數組不發生改變

ary.forEach(function (a,b,c){
    a:數組的每一項
    b:數組成員的索引
    c:要循環的數組
})
複製代碼

map

  1. 循環數組

  2. 有返回值

  3. map:遍歷 映射

  4. 須要參數

  5. 返回是映射以後的數組

  6. 原有數組不發生變化

  7. map裏有return屬性

Math

  1. Math 是一個對象數據類型的
console.log(Math);

console.log(typeof Math);
複製代碼
  1. Math.abs(); 取絕對值
console.log(Math.abs(3)); //3
複製代碼
  1. Math.floor(); 向下取整
console.log(Math.floor(5.9999)); //5
複製代碼
  1. Math.ceil(); 向上取整
console.log(Math.ceil(5.0001)); //6
複製代碼
  1. Math.max(); 獲取一組數的最大值;
console.log(Math.max(12,3,22,56,5,7,8)); //56
複製代碼
  1. Math.min(); 獲取一組數的最小值;
console.log(Math.min(1,23,45,2,4,5)); //1
複製代碼
  1. Math.random(); 產生一個0--1的隨機小數
console.log(Math.random());
複製代碼
  1. Math.round(); 四捨五入
console.log(Math.round(4.756));  //5
複製代碼
  1. 產生一個m-n之間的隨機整數
Math.round(Math.random()*(n-m)+m)
複製代碼
  1. Math.pow(m,n); 獲取m的n次冪
console.log(Math.pow(3,3)); // 3*3*3--27
複製代碼

十、Math.sqrt(16); 開16的平方---4

console.log(Math.sqrt(16)); //4
複製代碼

字符串的方法

  1. 有length

  2. 索引

  3. 字符串是不能根據索引修改的、只能用索引來獲取

  4. 字符串運算

  5. +是字符串拼接 其他轉number再運算

標記js表達式 ${變量名}

var srr="Rocky"
var str=`ma name is ${srr}`
console.log("3px"-"3");  //NaN
複製代碼
  1. toUpperCase: 把小寫字母變成大寫

原有字符串不發生變化

var sTc="zhufengpeix"

console.log(str.toUpperCase());//'ZHUFENGPEIX'
複製代碼
  1. toLowerCase: 把大寫轉小寫
console.log(sTr.toLowerCase());
複製代碼
  1. charAt: 經過索引獲取對應的字符
console.log(sTc.charAt[3]);
複製代碼
  1. charCodeAt: 獲取對應的字符的Unicode編碼值
console.log(sTr.charCodeAt(3));
97-122  a-z  65-90 A-Z
複製代碼
  1. substr: 字符串的截取;從索引m開始,截取n個;若是隻有一個參數;截取到末尾
console.log(str.substr(2));
複製代碼
  1. substring(m,n);從索引m開始,截取到索引n;但不包含n
console.log(str.substring(2, -5));
複製代碼
  1. slice(m,n);從索引m開始,截取到索引n;但不包含n;slice 支持負數傳參
console.log(str.slice(2, -5))
複製代碼
  1. replace : 替換replace(old,new);用新字符串替換舊字符串
console.log(str.replace("e", "a"));
複製代碼
  1. indexOf: 檢測字符串第一次出現的索引位置 若是不存在返回-1
console.log(str.indexOf("h"));
複製代碼
  1. lastIndexOf:檢測字符串最後一次出現的索引位置 若是不存在返回-1
console.log(str.lastIndexOf("e"));
複製代碼
  1. split: 按照特定的字符分割成數組中的每一項
//支持正則

console.log(str.split(" "));
複製代碼
  1. concat: 字符串拼接
console.log(str.concat("aaaa"));
複製代碼
  1. trim: 去空格 去字符串左右的空格
console.log(str.trim());
複製代碼
  1. trimLeft():去掉字符串左邊的空格
console.log(str.trimLeft());
複製代碼
  1. trimright(): 去掉字符串右邊的空格
console.log(str.trimRight());
複製代碼

js中字符串的屬性和方法

js獲取元素的方式

經過id獲取元素

  1. 元素是個對象 元素都是對象數據類型的

  2. 獲取不到 獲取結果是null

  3. 名字相同 只獲取第一個

  4. 上下文只能是document

var oBox= document.getElementById("id名")
//經過標籤名獲取元素
複製代碼
  1. 獲取的元素是一個元素集合

  2. 支持元素做爲該方法的上下文

var oBox= document.getElementsByTagName("標籤名")
經過class名獲取元素
複製代碼
  1. 若是須要獲取具體的某個元素 須要加上索引

經過class名獲取DOM元素

var oBox= document.getElementsByClassName("class名")
經過name名獲取元素
複製代碼
  1. 獲取元素集合 通常用於表單元素
<div name="boss"></div>
var oBox= document.getElementsByName("boss"複製代碼

經過選擇器獲取元素

  1. 若是是id加上#

  2. 若是是class 加上.

var oBox= document.querySelector("選擇器"複製代碼

獲取body元素

document.body
複製代碼

獲取HTML

document.documentElement
複製代碼

獲取全部的元素

<div></div>
<div></div>
<div></div>
console.log(document.querySelectorAll("div"))
複製代碼

DOM的節點以及屬性

節點是組成DOM樹的基本單位

節點分爲四種 元素節點 文本節點 註釋節點 document;他們都是對象數據類型的

nodeType nodeName nodeValue

元素節點 1 大寫的標籤名 null

文本節點 3 #text 文本內容

註釋節點 8 #comment 註釋內容

document 9 #document null

屬性

  1. childNodes: 當前元素全部的子節點

  2. children: 當前元素的全部的子元素節點

  3. parentNode:獲取當前元素的父親節點 document是根節點;他的父親節點是null

  4. previousSibling:上一個哥哥節點

  5. previousElementSibling:上一個哥哥元素節點

  6. nextSibling:下一個弟弟節點

  7. nextElementSibling:下一個弟弟元素節點

  8. firstchild:第一個子節點

  9. firstElementChild:第一個子元素節點

  10. lastChild:最後一個子節點

  11. lastElementChild:最後一個子元素節點

空格和換行符都是文本節點

console.log(box.childNodes);

console.log(box.children);

console.log(last.parentNode);
複製代碼

獲取上一個哥哥元素節點,兼容全部瀏覽器

function getBrother(curEle) {
 
        var pre = curEle.previousSibling;
        
        while(pre)
        
        {
            if(pre.nodeType===1){
                return pre;
            }
            
            pre = pre.previousSibling;
            
            // pre等於哥哥節點的哥哥節點;
        }
    }
複製代碼

動態操做DOM元素

  1. document.createElement:建立一個元素
var new = document.createElement("div"複製代碼
  1. appendChild(元素)
// 向容器末尾添加子節點

<div id="box"></div>

box.appendChild(元素)
複製代碼
  1. insertBefore
// 向容器中的某個元素前面插入新元素

容器.insertBefore(newChild,oldChild)

box.insertBefore(newDiv,firet)
複製代碼
  1. removeChild
//刪除子節點

容器.removeChild(oldChild)

box.removeChild(ul)
複製代碼
  1. replaceChild
//用新的子節點替換老的子節點

容器.replaceChild(newChild,oldChild)

box.replaceChild(newDiv,ul)
複製代碼
  1. cloneNode

  2. 克隆一樣的元素

  3. cloneNode的參數一個是true表明深度克隆將後代節點也克隆出來

  4. false:不傳就是false;淺克隆 克隆元素自己 不能克隆元素裏的全部後代節點

  5. 默認狀況下只能克隆元素自己 不能克隆元素裏的全部後代節點

  6. 不能克隆點擊事件

var divs=box.cloneNode(ture)
複製代碼
  1. getAttribute
// 獲取行間屬性所對應的屬性值

<div id="box" zfpx="hui"></div>

box.getAttribute("zfpx")
複製代碼
  1. setAttribute
//設置行間屬性對應的屬性值

box.setAttribute("a",100)
複製代碼
  1. removeAttribute
//移除行間屬性

<div id="box" zfpx="hui"></div>

box.removeAttribute("zfpx")
複製代碼
  1. classList

  2. add 新增類名

  3. remove 移除類名

  4. replace 改變類名(前一箇舊類名,後一個新類名)

box.classList.add("a")

box.classList.replace("a","b")
//前一個參數舊的  後面是新的class
複製代碼

Date

  1. new + 函數:建立這個函數的實例;實例是個對象數據類型

  2. new 是個關鍵字:

console.log(new Date()); //獲取當前電腦的系統時間
複製代碼
  1. getFullYear():返回時間年

  2. getMonth(): 返回時間月【0-11】

  3. getDate(): 返回當前日【1-31】

  4. getDay(): 返回星期幾 【0-6】星期日是0

  5. getHours(): 返回小時 【0-23】

  6. getMinutes(): 返回時間分鐘數 【0-59】

  7. getSeconds():獲取時間秒

  8. getMilliseconds():獲取毫秒數

  9. getTime(): 當前時間距離1970-1-1上午8:00 毫秒差

  10. Date.now():常常用於產生一個時間戳:產生一個惟一的數字

定時器

  1. setTimeout 和setInterval

  2. 定時器返回值

  3. 清除定時器 :claearInterval

JS 的組成部分

ECMAScript :

規定了JS基礎語法,變量、數據類型、操做語句、函數等

DOM : 文檔對象模型;

BOM : 瀏覽器對象模型

JS 的引入方式

  1. 行內式 內嵌式 外鏈式

JS 的輸出方式

  1. alert 彈框 將參數轉成字符串輸出

  2. console.log在控制檯輸出參數可爲多個

  3. confirm 彈框有取消按鈕

  4. document.write()在文檔寫入內容能夠識別標籤

JS中的變量

  1. 由字母、數字、下劃線、$組成;

  2. 不能以數字開頭,嚴格區分大小寫

  3. 遵循駝峯命名,第一個單詞的首字母小寫,其他有意義的單詞首字母大寫

  4. 不能使用關鍵字和保留字;

innerHTML innerText

  1. innerHTML 能夠識別標籤,innerText 不能夠識別標籤

  2. = : 賦值

var a = document.getElementById("a");
    
    a.onclick = function () {
        
        a.innerHTML += 123
    }
複製代碼

數據類型number

  1. number 能夠是整數、小數、NaN(not a number)

Number

  1. isNaN : 校驗是不是一個非有效數字

  2. parseInt:把字符串轉成數字,從左到右依次識別,直到遇到一個非有效數字爲止把識別到的以數字形式返回

  3. parseFloat :多識別一位小數點

  4. toFixed : 保留小數點位數

var  a = Number("18")
string
複製代碼
  1. length 索引 "" '';

  2. 字符串的運算 - * /

  3. : 字符串的拼接

布爾類型

  1. boolean : true false

  2. Boolean :

  3. js的內置方法;在全局做用下

  4. 0 "" NaN null undefined只有這五個值轉 布爾是false

  5. ! : 先把後面的值轉成布爾,再取反

console.log(![] == [])// true
 
    console.log([]==[])// false
    
    console.log(![]==false);//true
    
console.log({a:1}=="[objectobject]")//true

console.log("12px" == 12);
複製代碼
  1. ! : 會先把後面的值進行去布爾,而後再取反,最後比較

  2. null undefined: 都表示沒有

var obj = {a:1};//obj=null;
    
    var  a;
    
    
    console.log(a);
    
    console.log(obj.b);// undefined
複製代碼

三個判斷

if / else

  1. if (若是)

  2. else if (再者)

  3. else (不然)

switch

break(終止)

三元運算符

ID

  1. js中若是ID名重複,只能獲取第一個id的元素

  2. ID名不能重複、

  3. 若是經過id名獲取不到內容,那麼獲取的結果是null

js的輸出方式

  1. console.log()在控制檯輸出

  2. 常常用於調試bug 開發人員使用

console.log(100);
複製代碼
  1. alert:彈出

  2. 有且只有彈出第一個數

<script>

alert(222,333,666)

</script>
複製代碼
  1. 會讓代碼中止到這一行

  2. 會把彈出的值轉成字符串,默認調用tostring方法

若是控制檯是數字,字體顏色是藍色

若是控制檯是字符串,字體顏色是黑色

(單雙引號包起來的都是字符串)

  1. confirm:相對於alert多一個取消按鈕

若是點擊肯定,表明true,點擊取消,表明false

prompt:在confirm基礎上增長讓用戶輸入的效果

用戶點擊取消按鈕,咱們獲取到的結果是 null(空) ,用戶點擊的結果是肯定,

咱們將會獲取到用戶所輸入的內容(若是用戶沒有輸入內容,那麼獲取的將會是空字符串)

使用原生js封裝模態框組件

  1. console.dir:詳細輸出

  2. console.table:把json數據以表格的形式輸出

在js中定義一個變量

變量:值是能夠變的

  1. 變量實際上是一個無心義的名字,它所表明的意義都是其存儲的值

  2. 常量:值是不可變的

  3. var + 變量 =值

  4. 變量名是本身起的

  5. 定義一個變量名是a,把這個10的值賦值給a,那麼a表明這個10

var a=10;
console.log(a);
console.log(a+10);
複製代碼
  1. 變量命名規範

  2. 變量名是由字每,數字,下劃線,¥組成

  3. 變量名數字不能開頭,嚴格區分大小寫

  4. 遵循駝峯命名法;第一個單詞首字母小寫;剩餘有意義的單詞首字母大寫;

  5. 關鍵字和保留字不能做爲變量名

  6. 關鍵字:在js中有特殊意義的單詞都是關鍵字

  7. 保留字:將來有可能成爲關鍵字的單詞

js屬性

  1. innerHTML:改變元素中的內容,並且識別標籤
<div id="box"></div>
<script>

window.document.getElementById("box").innerHTML("改變內容")

</script>
複製代碼
  1. innerText:不能識別標籤

  2. onclick=function 鼠標點擊事件

  3. 前面加元素名

var a= document.getElementById("box");

a.onclick=function() {
    
    //點擊時,此處代碼運行

a.innerHTML="<ahref='http://www.baid.com'>百度</a>";};
複製代碼

引用數據類型分爲:對象數據類型和函數

數據類型

  1. 對象數據類型:對象 數組 正則

  2. Dote的實例 Math

  3. 布爾數據類型

一、Boolean

  1. 在boolean只有兩個值:true和false

  2. true:正確 false:錯誤

  3. true--1 false--0

  4. boolean把其餘類型轉布爾類型方法;返回值只有正確和錯誤

  5. 在js中只有0、「」、null、undefined、NaN 這五個值轉布爾值是false 其他全是true

  6. 負數也是true

console.log(Boolean(0));--false

console.log(Boolean(2));--true
複製代碼

!:取反

  1. 首先會把後面的值轉成布爾值,而後再取反
console.log(!NaN);--true

     console.log(!"12px");--false
複製代碼

string:字符串

  1. 字符串:用單引號或雙引號包起來的值就是字符串類型

  2. length:有長度,length的屬性值表明字符串的個數

var str="wdaifhauohfiuahgfia"

console.log(str.length);
複製代碼
  1. 有索引 索引從0開始第二個字符串索引可就是1
console.log(str[3]);

console.log(str[str.length-1]);
複製代碼

獲取字符串最後一項:

  1. 字符串運算

任何數字和NaN運算都是NaN

加法是字符串的拼接

減法、加法、除法是先把字符串轉成number類型,而後運算

console.log("18-16");2

console.log("18px"-"12");6

console.log("18px"*"12");216

console.log("18px"/"12");1.5

console.log("18px"+"12");18px+12

console.log("18"+"12");1812
複製代碼

null和undefined都表示沒有

null表示如今沒有,之後可能會有、undefined表示如今沒有,之後也不可能有

null:

  1. 經過id獲取元素若是獲取不到內容,那麼默認返回值是null

  2. 若是須要銷燬對象的堆內存,那麼會給對象賦值爲null

  3. 正則進行捕獲,捕獲不到內容,那麼返回值是null null表示對象指針

數組去重

  1. indexOf

  2. 對象;循環對象;放入新的數組中

  3. 操做原有的數組

冒泡排序

  1. 冒泡排序:讓相鄰兩項進行比較若是前面一項比後面一項大,讓其交換位置

遞歸

  1. 遞歸:針對函數:在函數內部調用函數自己;讓其執行,這種現象就是函數的遞歸

  2. 須要結束條件,結束當前循環

  3. 遞歸的時候必定要有一個結束條件 不然會一直循環下去

快速排序

  1. 快速排序原理:獲取到數組的中間項而後讓數組中的每一項和中間項進行比較

插入排序

  1. 新建一個數組

  2. 把舊數組的第一項push到新數組中

  3. 取舊數組中的每一項和新數組中的每一項比較

在js中,遇到{}、[]都會開闢一個新的空間地址

  1. = 賦值

  2. 把10賦值給變量hh

var hh=10;
複製代碼
  1. == 比較;返回一個布爾值;相等返回true,不相等返回false

  2. 容許不一樣數據類型之間的比較

  3. 若是是不一樣類型的數據進行,會默認進行數據類型之間的轉換

console.log(1==1);//true

console.log(1=="1");//true

console.log(1=="1px");//false

console.log(1==true);//true
複製代碼

若是是對象數據類型的比較,比較的是空間地址

console.log({}==[]);//false

console.log({}=={});//false

console.log([]=="");//true

console.log([]==0);//true
複製代碼

{} 調用跑哪一個tostring轉換成字符串結果是「[object object]」

  1. === 絕對比較;只要數據類型不同,那麼返回false
console.log(1 === 1 );//true

console.log(1 ===true );//false

console.log(1 === "1");//false
複製代碼

js判斷語句

1.操做語句:三個判斷、三個循環

  1. 瀏覽器從上到下進行判斷、若是條件成立 就執行那塊代碼

  2. 只要有一處知足條件,下面即使條件成立 都不執行

  3. 小括號中的條件最後必定要轉成一個布爾值

if ([])
console.log(1)
複製代碼

條件嵌套、兩個條件同時知足,才成立

if(20>10){
    if(11<18){

    }
}
複製代碼
  1. 三元運算符
//條件?條件成立執行:條件不成立執行' 18=="18px"?console.log(18):console.log(19); 複製代碼
  1. switch case

絕對比較

var num =10;

switch (num){
    csae "10":
    console.log(1);
    break;  //終止不讓向下進行判斷
    
    case "10px":
    console.log(2);
    break;
    
    case 10:
    console.log(3);
    break;
    
  default:   //當以上條件都不成立時、執行此處代
  碼
  console.log(4)
  
}
複製代碼

邏輯運算符

  1. && :而且、同時知足

  2. || :或、只要其中一個知足

  3. &&

if(1==1 && 1==="1"){
    //當兩個條件都成立、總體才成立
    console.log(1);
    
}
||

if(isNaN("12px")||3==="3"){
    //只要其中一個知足、條件成立
    console.log(3);
    
}

複製代碼

三個循環

  1. JS 是單線程的、同一時間、只能作一件事

  2. for 循環的四步曲

  3. 定義變量i;

  4. 判斷條件是否成立

  5. 執行循環體

  6. 執行i++

//執行過程1-->2-->3-->4-->2-->3-->4..

for

for(va i=0; i<10; i++){
    
    console.log(1);
}
  console.log(2);
continue:中止本輪循環

for(var i=0;i<10;i++){
    
    if(i>5){
        continue
    }
    console.log(100);

}
break:終止整個大循環

for(var i=0;i<10;i++){
    
    if(i>5){
        break;
    }
    console.log(100);

}
複製代碼

for in

var  obj={a:1,b:3,str:"www"};

for(var key in obj){
    //key:表明屬性名、並且是個字符串
    console.log(key);
    //obj[key] 表明屬性名對應的屬性值
    //會把屬性值是數字的先輸出
    //輸出循序會根據屬性名進行排序、從小到大依次輸出
    console.log(obj[key]);
}
複製代碼

while

  1. 通常用於不知道循環多少次時,用while

  2. 阻塞主線程、讓代碼在此處停留

  3. 同異步

var  i=0;

    while(i<4){
    
    //改變while的條件通常在循環體中進行修改;
    console.log(100);
    
    i++;
    }
複製代碼

do while

  1. 先執行;後判斷
var i=0

do{
    console.log(111)
    i=i+2
}while(i<10);

複製代碼
相關文章
相關標籤/搜索