JS 1-數據類型

CSS和JS在網頁中的安排遞次

只管將CSS link標籤放在html文檔靠前位置。JS代碼放在html文檔底部,body完畢標籤前

白屏和FOUC

假如將CSS款式放在html最背面時,依據瀏覽器襯着機制差別能夠會湧現白屏、無款式內容閃灼FOUC的狀況。白屏是瀏覽器守候DOM和CSSOM全加載完成后再襯着的時候延遲發生(IE有這類狀況),import導入CSS款式,即使放在首部地區,也會有白屏徵象。無款式閃灼(IE、firefox都有)是瀏覽器邊加載邊實行,逐漸加載無款式的內容,等CSS加載后頁面倏忽展示款式。
JS代碼放在HTML文檔底部的緣由是:劇本加載須要時候,會壅塞背面內容的展示;頁面某些功用依靠js,假如JS放最前面,先加載js,頁面上某些功用區的款式能夠還沒襯着時JS就實行了。
js制止併發加載,由於有前後關聯所以只能遞次加載,CSS款式可併發加載。

async和defer的作用

同步就是遞次實行,實行完一個再實行下一個,須要守候、諧和運轉。異步就是相互自力,在守候某事宜的歷程當中繼承做本身的事,不須要守候這一事宜完成后再事情。
JS文件異步加載有async和defer兩種體式格局
<script></script> 沒有defer或async js代碼馬上加載並實行,後續襯着元素守候
<script async></script> js加載並實行與襯着後續文檔併發實行(異步)。是無遞次的。
<script defer></script> js加載暫不實行,加載歷程與襯着後續文檔併發實行(異步),但js實行須要在所有元素剖析完成后舉行。有遞次的。

網頁的襯着機制

剖析HTML構建DOM樹,剖析CSS構建CSSOM樹,把DOM、CSSOM組合成襯着樹(render tree),在襯着樹基礎上盤算多少組織,繪製到屏幕。

JavaScript 數據範例

JS中有6種數據範例:null,undefined,number,string,boolean,object。
龐雜範例是指object(廣義對象obj,arr,regx等),可由多個簡樸範例的值的合成,能夠看做是一個寄存種種值的容器。
簡樸範例指number,string,boolean
特別範例指null,undefined

NaN、undefined、null的區分

NaN not a number,非数字,NaN和任何值都不等,包含NaN本身。NaN = = NaN //false;推斷一個值是不是是NaN,運用isNaN()
null是一個示意”無”的對象,範例轉換是轉為數值0。空指針,不存在任何東西。只要一個值:null.示意此處有值但為空。
undefined是一個示意”無”的原始值,範例轉換時轉為NaN。變量被聲明但沒初始化,有指針但沒指向任何空間。只要一個值:undefined,示意未定義。
null是對象範例(汗青緣由定義為對象範例,本質上屬於undefined),NaN 是數值範例。

typeof和instanceof的作用

typeof作用是檢測變量的數據範例。數值、字符串、布爾值離別返回number、string、boolean,函數返回function,undefined返回undefined,null返回object(兼容之前的代碼,汗青問題定義為對象範例),NaN返回number,除此之外的其他狀況全都返回object。
typeof能夠用來檢測一個沒有聲明的變量,而不報錯,非嚴厲形式中,可對undefined賦值

《JS 1-數據類型》

instanceof運算符返回一個布爾值,示意指定對象是不是為某個組織函數的實例

type of代碼示例:

function isNumber(el){
    if (typeof(el)==="number"){
      return true;
    } else{
      return false;
    }
};

function isString(el){
    if (typeof(el)==="string"){
      return true;
    } else{
      return false;
    }
};

function isBoolean(el){
    if(typeof(el)==="boolean"){
      return true;
    } else {
      return false;
    }
}

function isFunction(el){
    if(typeof(el)==="function"){
      return true;
    } else{
      return false;
    }
}

undefined
var a = 2,
    b = "jirengu",
    c = false;

alert( isNumber(a) );
alert( isString(a) ); 
alert( isString(b) ); 
alert( isBoolean(c) ); 
alert( isFunction(a));
alert( isFunction( isNumber ) ); 

+運算符

console.log(1+1);    //2 數值直接相加
console.log("2"+"4");  //"24"  +會將兩個字符串拼接
console.log(2+"4");   //"24"  一個數值一個字符串也會被拼接
console.log(+new Date());  //1473494481714,日期對象是慣例,有2個操作數時優先挪用toString()要領,一個+號返回毫秒數 
console.log(+"4");  //4  一個字符串時會轉換成數值

a++,++a

a++是先援用a在自增,++a是先自增再援用a

var a = 1;
a+++a;   //效果為3即(a++)+a
typeof a+2;  //效果為 "number2"  typeof a的效果是"number"  "number"+2 即為"number2"

typeof運算優先級最高,逗號運算符優先級最低

    原文作者:x868086
    原文地址: https://segmentfault.com/a/1190000015089943
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞