js復(fù)習(xí)

概念描述:javaScript是一種基于對象和事件驅(qū)動并且相對安全性的客戶端腳本語言 。
特點(diǎn):松散性 繼承機(jī)制 對象屬性
數(shù)據(jù)類型: undefined null 布爾 string number object function函數(shù)不是數(shù)據(jù)類型
var box;
alert( typeof box); box是underfind類型

什么是真什么是假:

  1. 真:true 非空字符串 任何非零數(shù)字值 任何對象
  2. 假:false 空字符串 0和 NaN undefined

隱式轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換

parseInt(); 只能轉(zhuǎn)換字符串至數(shù)值 遇到非數(shù)字就停止,開頭非數(shù)字返回NaN;
parseFloat(); 只能識別第一個小數(shù)點(diǎn)后邊的數(shù)值;
toString(); 數(shù)值轉(zhuǎn)換成字符串;不包含null和undefined
string(); 強(qiáng)制轉(zhuǎn)換 包含null和undefined
++box跟box++的區(qū)別:前者是先計算后賦值,后者是先賦值后計算
var box =100 + "100" //轉(zhuǎn)讓個人時候加號就是字符串連接符,而hi不是加法運(yùn)算; 只要其中一個是字符串,
關(guān)系運(yùn)算符中 如果兩個都是數(shù)值字符串,那么就會進(jìn)行第一個數(shù)字的比較 “3”>"22" true
break和continue語句的區(qū)別:break語句是立即退出循環(huán),強(qiáng)制繼續(xù)執(zhí)行循環(huán)體后面的語句。continue語句是退出當(dāng)前循環(huán),繼續(xù)后面的循環(huán)。
with語句:var n=box.name ==with(box){var n =name};
do while:先運(yùn)行再判斷

 $(function(){
    var box = 1;
    do{
        alert('box');
        box++;
      }while(<=5);
    // while語句格式
    var box =10;
    whille(box<=5);
    alert(box);
    box++;
  })

while語句:先判斷再運(yùn)行
for語句:for(var box=1;box<=5;box++){alert(box)};
for in 語句:var box = {
'name':'12',
'age':'15',
'height':'178'
}
for(var p in box){alert(p)}
.join(|); 默認(rèn)情況下數(shù)組字符串會以逗號分隔開,使用join();方法可以用不同的分隔構(gòu)建這個字符串
用instanceof來檢測基本類型的值 返回布爾值
.concat();連接兩個或多個數(shù)組 {var cArray = array1.concat(bArray);
cArray.splice(1,1);}
.push(); 末尾添加數(shù)組
.pop(); 刪除末尾數(shù)組
棧方法是后進(jìn)先出,列隊方法是先進(jìn)先出
.shift(); 刪除數(shù)組開頭的一個元素
.unshift(); 在數(shù)組開頭添加一個元素
.reverse(); 逆向排序;
.sort(); 從小到大排序;
.slice(1,3);截取數(shù)組 只取1.2 3元素;
.splice(0,2); 刪除數(shù)組 刪除從第0個位置取2個
.splice(1,0,'江蘇','鹽城'); 從第一個插入點(diǎn)插入元素 0表示不刪除
.splice(1,1,'100'); 替換
時間:
var data = new Date();
alert(data.toLocaleString());本地格式區(qū)域字符串
Data.parse(4/12/2007''); 返回的是一個毫秒數(shù);
new Data(Data.parse(4/12/2007'')) //把毫秒數(shù)轉(zhuǎn)換成看得懂的時間
.getFullYear(); 年
.getMonth() + 1; 月 月份是從0月開始的
.getData();
.getHours();
.getMinutes();
.getSecond();
call();和aply();的做用和區(qū)別:
做用:改變this的指向,第一個參數(shù)為你要傳入的對象,傳入后函數(shù)的this就指向了這個對象,后面的參數(shù)為你為函數(shù)傳遞的參數(shù)值;
區(qū)別:call可以傳入多個參數(shù);
apply只能傳入兩個參數(shù),所以其第二個參數(shù)往往是作為數(shù)組形式傳入

less跟scss的區(qū)別:

1.編譯環(huán)境不同:less基于node,scss基于ruby;2.聲明方式不同:less以@聲明;scss以$聲明。

什么是預(yù)處理器:
好處:可以讓 CSS 更加簡潔、適應(yīng)性更強(qiáng)、可讀性更佳,更易于代碼的維護(hù)等。
jsonP原理:動態(tài)的創(chuàng)建一個Script標(biāo)簽,利用script,src訪問不受限制,url后邊要跟一個函數(shù),對返回的數(shù)據(jù)做處理。
json跟jsonP的區(qū)別:json是一種數(shù)據(jù)交換格式,而jsonP是json的一種使用模式, 是基于json的
webSocket:是htm5開始提供的一種在單個TCP鏈接上進(jìn)行全雙工通訊的協(xié)議,在webSocket API中,瀏覽器和服務(wù)器只需要做一個握手的動作,然后瀏覽器和服務(wù)器之間就形成了一條快速通道,兩者之間就直接可以數(shù)據(jù)互相傳送。
瀏覽器 通過javaScript向服務(wù)器發(fā)出建立WebSocket鏈接請求,鏈接建立以后,客戶端和服務(wù)器端就可以通過TCP連接 直接交換數(shù)據(jù)。當(dāng)你 獲取WebSocket連接后,可以通過send()的方法來向服務(wù)器發(fā)送數(shù)據(jù) ,并通過onmessage事件來接收服務(wù)器返回的數(shù)據(jù)。
MySQL語句
查:select * from 表名
刪:delete from 表名 where 條件 where ID= 2;
增:insert into 表名 values(0,1,2)
改:update 表名 set字段 = '值',where ID= 2;
基本類型和引用類型的區(qū)別 基本包裝類型:就是字面量類型
引用類型的自定義方法和屬性可以識別,基本類型的自定義方法和屬性不可以識別,相同點(diǎn):都可以識別內(nèi)置屬性和方法
toString() 把數(shù)字轉(zhuǎn)換成字符串
toLocaleString() 本地化把數(shù)值轉(zhuǎn)換成字符串
toFiexed(2) 小數(shù)點(diǎn)保留兩位轉(zhuǎn)換成字符串 四舍五入
charAt(1) 返回字符串指定下標(biāo)的值
slice(3) 從第三個字符串開始截取
indexof() 返回字符串下標(biāo)
toLowerCase() 字符串轉(zhuǎn)小寫
toUpperCase() 字符串轉(zhuǎn)大寫
replace()字符串替換
split(“ ”) 字符串以空格分隔成數(shù)組
*this表示new object實例化出來的一個對象,this要放在一個作用域下”
構(gòu)造函數(shù)的示意圖

     function Box(user,age){
        this.user  = user;   //實例屬性
        this.age  = age;
        this.run   = function(){   //實例方法
            return this.user + this.age + "gtt"
        };
    };
    var box1 = new Box('lee',38)
    var box2 = new Box('gtt',18)
    alert(box1.run());
    alert(box2.run());

box1 -->box{name:12;age:16}
box1 -->box{name:12;age:16}
原型的示意圖

    function Box(){};
    Box.prototype.name = 'gtt';   // 原型屬性
    Box.prototype.age = 18;
    Box.prototype.run = function(){   // 原型方法
        return this.name + this.age + '我愛你'
    }
    var box1 = new Box();
    var box2 = new Box();
    alert(box1.run());
    alert(box2.run());

box1 -->box{-proto-} \
同時指向 -->{name:14;age:18}
box2 -->box{-proto-} /
如果是實例方法,不同的實例化,他們的方法地址是不一樣的是唯一的;如果是原型方法,她們的地址是共享的,大家都是一樣的

如何判斷一個變量是對象還是數(shù)組:

  • 使用instanceof 要先判斷是不是數(shù)組,否則都會返回opject
  • 其中用prototype.toString.call()兼容性最好

去重
1、Set結(jié)構(gòu)去重。
2、遍歷,將值添加到新數(shù)組,用indexOf()判斷值是否存在,已存在就不添加,達(dá)到去重效果。

   let a = ['1','2','3',1,NaN,NaN,undefined,undefined,null,null, 'a','b','b'];
    let unique = arr =>{
    let newA=[];
        arr.forEach(key => {
        if( newA.indexOf(key)<0 ){ //遍歷newA是否存在key,如果存在key會大于0就跳過push的那一步
            newA.push(key);
             }
         });
            return newA;
    }
        console.log(unique(a)) ;//["1", "2", "3", 1, NaN, NaN, undefined, null, "a", "b"]
        //ps:這個方法不能分辨NaN,會出現(xiàn)兩個NaN。是有問題的,下面那個方法好一點(diǎn)。

3、遍歷,將數(shù)組的值添加到一個對象的屬性名里,并給屬性賦值,對象不能添加相同屬性名,以這個為依據(jù)可以實現(xiàn)數(shù)組去重,然后用Object.keys(對象)返回這個對象可枚舉屬性組成的數(shù)組,這個數(shù)組就是去重后的數(shù)組。

let a = ['1', '2', '3', 1,NaN,NaN,undefined,undefined,null,null, 'a', 'b', 'b'];
    const unique = arr => {
        var obj = {}
        arr.forEach(value => {
        obj[value] = 0;//這步新添加一個屬性,并賦值,如果不賦值的話,屬性會添加不上去
        })
        return Object.keys(obj);//`Object.keys(對象)`返回這個對象可枚舉屬性組成的數(shù)組,這個數(shù)組就是去重后的數(shù)組
    }
        console.log(unique(a));//["1", "2", "3", "NaN", "undefined", "null", "a", "b"]

splice()將字符串轉(zhuǎn)換成數(shù)組,join();將數(shù)組轉(zhuǎn)換成字符串

在JS中 Object === Object 感覺沒有任何問題 這兩個都代表的一個東西

但是如果你試過 NaN === NaN 是返回false為什么呢?
NaN==NaN 返回false
因為NaN 是:Not a number (不是一個數(shù)字的縮寫)

既然不是一個數(shù)字 那么很好理解 'A'不是一個數(shù)字 ,'B'也不是一個數(shù)字

那么既然他們兩個都不是數(shù)字 ,難道'A' === 'B'嗎? 顯然不是

所以這個東西開出來是有原因的

排序

  var numberArray = [3,6,2,4,1,5];
        numberArray.sort(function(a,b){return b-a})
        alert(numberArray)

獲取瀏覽器可視范圍的頁面窗口
window.innerWidth //window.innerHeight
document.documenElement.clientWidth
document.documenElement.clientHeight
間歇調(diào)用

  • 超時調(diào)用 var box= setTimeout(function(){alert('lee')},2000)
    clearTimeout(box) 取消當(dāng)前超時調(diào)用

  • 間歇調(diào)用 var box = setInterval(function(){alert('lee'),2000})
    clearInterval(box) 取消當(dāng)前間歇調(diào)用
    DOM操作等待html文檔加載完畢才可以獲取,可以把script標(biāo)簽放在后邊

  • setAttribute();設(shè)置屬性和值

  • scrollIntoView(); 設(shè)置指定可見

事件綁定和普通事件的區(qū)別
普通事件中的onclick是DOM0級事件只支持單個事件,會被其他onclick事件覆蓋,而事件綁定中的addEventListener是DOM2級事件可以添加多個事件而不用擔(dān)心被覆蓋
css中那些屬性可以被繼承

  • 字體相關(guān):line-height, font-family, font-size, font-style, font-variant, font-weight, font

  • 文本相關(guān): letter-spacing, text-align, text-indent, text-transform, word-spacing

  • 列表相關(guān):list-style-image, list-style-position, list-style-type, list-style
    js原生值轉(zhuǎn)json字符串:JSON.stringify()
    json字符串轉(zhuǎn)js原生值:JSON.parse()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 《復(fù)習(xí)筆記》 一、ajax ajax:無刷新從服務(wù)器取數(shù)據(jù); 緩存:瀏覽器針對同一個網(wǎng)址只會訪問一次 aja...
    2e9a10d418ab閱讀 325評論 0 2
  • 1.數(shù)據(jù)類型number string Boolean undefined null o...
    鐘意_034a閱讀 183評論 0 0
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,674評論 0 4
  • 1 數(shù)據(jù)類型 2 ===和==的區(qū)別, 3 js onload和DOMcontentloaded的區(qū)別 ...
    阿帕奇喲閱讀 121評論 0 0
  • 變量命名先賦初值 比如: 數(shù)據(jù)類型 基本數(shù)據(jù)類型num,string,undefind,null,boolean復(fù)...
    Simon海明月閱讀 257評論 0 0

友情鏈接更多精彩內(nèi)容