成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javaScript的變量、值與類型

bingchen / 2469人閱讀

摘要:語言類型包括和。對語言引擎和開發(fā)人員來說,類型是值的內(nèi)部特征,它定義了值的行為,以使其區(qū)別于其他值有七種內(nèi)置類型空值未定義布爾值數(shù)字字符串對象符號,中新增除對象之外,其他統(tǒng)稱為基本類型。

本文主要是奇舞前端特訓(xùn)營的筆記
https://t.75team.com/video

變量

變量聲明的三種方法

1.var-聲明一個變量,可選擇將其初始化為一個值

 - 不支持塊級作用域
 - var存在變量提升
console.log(a === undefined) //true
        var a = 10;

2.let-聲明一個塊級作用域變量,可選擇將其初始化一個值

- 塊級作用域
{
    let x = 10;
}
console.log(typeof x); //undefined
- 同一作用域中不允許重復(fù)聲明
- 暫存死區(qū)
- 循環(huán)中的let作用域
- 瀏覽器兼容性

3.const-聲明一個只讀的常量 綁定的值不可以再次改變

類型

ECMAScript語言中所有的值都有一個對應(yīng)的語言類型。ECMAScript語言類型包括Undefined、Null、Boolean、String、Number和Object。
對語言引擎和開發(fā)人員來說,類型是值的內(nèi)部特征,它定義了值的行為,以使其區(qū)別于其他值

JavaScript有七種內(nèi)置類型:

空值(null
未定義(undefined
布爾值( boolean
數(shù)字(number
字符串(string
對象(object
符號(symbol,ES6中新增)
除對象之外,其他統(tǒng)稱為“基本類型”。

Boolean
值:true和false
需要注意:0,"", null, undefined, 會被隱式的轉(zhuǎn)化為false,其他都為true

建議采用嚴格比較,可以通過!!將非boolean轉(zhuǎn)化為boolean

比較操作符總會返回boolean

布爾操作符&&和||不會轉(zhuǎn)化類型

&&和||具有短路特性

console.log(null !== undefined, null == undefined); //true, true
console.log(1 && 2) //2

Number

數(shù)值范圍
整數(shù)-2^53~2^53

   超過后會有精度丟失

小數(shù)精度Number.EPSILON
Infinity, Number.MAX_VALUE, Number.MIN_VALUE

浮點數(shù)精度問題
console.log(0.2+0.4) //0.6000000000000001
限制精度

   console.log((0.2+0.4).toFixed(2)); // 0.60

String

引號規(guī)范和轉(zhuǎn)義
建議使用單引號

字符串類型轉(zhuǎn)換
console.log("1"+2, "2"-1);//"12", 1 隱式類型轉(zhuǎn)化
字符串模版

Object

對象是個引用類型

值類型和包裝類型
包裝類型typeof是object

對象的copy

let conf = {
    adapter: "sqlite",
    db: {
        aqlite: {
            name: "xxx.sqlite"
        },
        mysql: {
            name: "xxx",
            username: "work",
            passwd: "***"
        }
    }
}

// ES6淺拷貝
let copied = Object.assign({}, conf);
copied.adapter = "mySql";
console.log(conf.adapter); //sqlite
console.log(copied.adapter); //mySql

copied.db.mySql.name = "yyy.sqlite";
console.log(conf.db.mySql.name); //yyy.sqlite

// 深拷貝
function deepCopy(des, src){
    for( var key in src){
        let prop = src[key];
        if(typeof prop === "object"){
            des[key] = des[key] || {}; // typeof{} === object
            deepCopy(des[key], src[key]);
        }else {
            des[key] = src[key];
        }
    }
    return des;
}
let deepCopied = deepCopy({}, conf);
deepCopied.db.sqlite.name = "zzz.sqlite";
// 深拷貝
console.log(deepCopied.db.sqlite.name, conf.db.sqlite.name);//"zzz.sqlite, yyy.sqlite"
對象的類型和構(gòu)造器

new和constructor

new是一種語法糖

prototype

//原型鏈
// __proto__暴力構(gòu)建原型鏈
var a = {x: 1},b = {y: 2}, c = {z: 3};
b.__proto__ = a;
c.__proto__ = b;
console.log(c);

// 使用Object.create(a)構(gòu)建原型鏈
var a = {x: 1};
var b = Object.create(a);
b.y = 2;
var c = Object.create(b);
c.z = 3;
console.log(c);

// 使用構(gòu)造器構(gòu)建原型鏈
function A(){
    this.x = 1;
}
function B(){
    this.y = 2;
}
B.prototype = new A();
function C(){
    this.z = 3;
}
C.prototype = new B();
var c = new C();
console.log(c);

// 三種方式都是構(gòu)建原型鏈

一張圖片有助于理解

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81172.html

相關(guān)文章

  • JavaScript-簡單及復(fù)雜數(shù)據(jù)類型詳解

    摘要:打開首先看簡單數(shù)據(jù)類型拿舉個栗子看懂這一段應(yīng)該不難。我們把基本數(shù)據(jù)類型中的這種操作稱為拷值,方便記憶??偨Y(jié)簡單數(shù)據(jù)類型用拷的,復(fù)雜數(shù)據(jù)類型用借的。 本篇不詳細介紹每種數(shù)據(jù)類型的用途,如有需要請訪問JS數(shù)據(jù)類型。 JavaScript中的數(shù)據(jù)類型 簡單(基本)數(shù)據(jù)類型: Number、String、Boolean、Undefined、Null復(fù)雜(引用)數(shù)據(jù)類型: Object、Arra...

    psychola 評論0 收藏0
  • JavaScript 之 核心語法 [ 語句 ]

    摘要:語句概況描述在代碼中,使用分號分隔的可以叫做是語句語句塊在代碼中,大括號表示語句塊語句塊中可以存在一條或多條語句語句的分類條件語句循環(huán)語句跳轉(zhuǎn)語句條件語句描述通過對條件表達式的計算結(jié)果進行判斷,來決定要執(zhí)行的語句語句語法條件表達式語句塊當(dāng) 語句概況 描述 在JavaScript代碼中,使用分號(;)分隔的可以叫做是語句 語句塊 在JavaScript代碼中,大括號({})表示語句塊 ...

    stormjun 評論0 收藏0
  • JavaScript 需要檢查變量類型

    摘要:一返回值調(diào)用外部方法獲取的值需要對類型做判斷,因為我們對方法返回的值是有期望值類型,但是卻不能保證這個接口返回的值一直是同一個類型。 19年目標:消滅英語!我新開了一個公眾號記錄一個程序員學(xué)英語的歷程 有提升英語訴求的小伙伴可以關(guān)注公眾號:csenglish 程序員學(xué)英語,每天花10分鐘交作業(yè),跟我一起學(xué)英語吧 javascript作為一門動態(tài)類型語言,具有很高的動態(tài)靈活性,當(dāng)定義函數(shù)...

    Songlcy 評論0 收藏0
  • JavaScript基本數(shù)據(jù)類型

    摘要:中有種基本數(shù)據(jù)類型和。在介紹的基本數(shù)據(jù)類型前,有必要提到兩個關(guān)鍵字和。由于中的變量是松散類型的,所以它提供了一種檢測當(dāng)前變量的數(shù)據(jù)類型的方法,也就是關(guān)鍵字。輸出的結(jié)果為用于表示由零數(shù)字或字符組成的字符序列,即字符串。 如果你是一名IT前端人員,怎么會不懂JavaScript的美?如果你是一名前端在學(xué)人員,接觸JavaScript后,怎么會不明白JavaScript中基本數(shù)據(jù)類型?大家都...

    ispring 評論0 收藏0
  • JavaScript面向?qū)ο笾?em>的嚴格模式個人分享

    摘要:嚴格模式嚴格模式的概念所謂嚴格模式就是對中的一種限制性更強的方式屬于代碼的一種強制規(guī)則來規(guī)范代碼的格式簡單的說就是必須按照嚴格模式的規(guī)則書寫代碼否則就會報錯嚴格模式修正了一些引擎難以優(yōu)化的錯誤同樣的代碼有些時候嚴格模式會比非嚴格模式下更加快 嚴格模式 嚴格模式的概念 所謂嚴格模式就是對JavaScript中的一種限制性更強的方式. 屬于代碼的一種強制規(guī)則,來規(guī)范代碼的格式簡單的說就是...

    lordharrd 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<