摘要:內(nèi)置函數(shù)和對象中內(nèi)置了一些函數(shù)和對象,很多語言都會有內(nèi)置的方法,直接可以調(diào)用開發(fā)。根據(jù)語法標(biāo)準(zhǔn)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。強(qiáng)制類型轉(zhuǎn)換大家應(yīng)該都知道。
js基礎(chǔ) - 變量
*大家對js一定不會陌生,入門很簡單(普通入門),很多人通過網(wǎng)絡(luò)資源、書籍、課堂等很多途徑學(xué)習(xí)js,但是有些js基礎(chǔ)的只是往往被大家遺漏,本章就從js變量類型來說一說js
變量類型*js變量類型分為基本類型(或者叫值類型)和引用類型。值類型包括Number、Boolean、String、undefined、 null、Symbol (ES6 新增)。 引用類型包括Object 、Array、Function、Date、RegExp,值類型存放在棧內(nèi)存中,引用類型的數(shù)據(jù)是存放在堆內(nèi)存中。
值類型的數(shù)據(jù)在復(fù)制的時(shí)候會在棧內(nèi)存中新建一個(gè)新的存儲區(qū)域用來存儲新的變量,和之前的值沒有任何關(guān)系。比如如下例子:
var a = "a" var b = a b = "b" console.log(a) // "a"
當(dāng)b的值改變的時(shí)候,a的值不會跟著改變。這個(gè)很簡單,大家也都能理解。
下面說一下引用類型,定義一個(gè)對象的時(shí)候會在棧內(nèi)存中存儲了一個(gè)指針,該指針指向堆內(nèi)存中該對象的存儲地址,當(dāng)復(fù)制這個(gè)對象賦值給另一個(gè)對象的時(shí)候,只是把該對象的指針地址賦值給了另一個(gè)對象變量,他們都指向同一個(gè)對象,所以當(dāng)一個(gè)值改變的時(shí)候,另一個(gè)值會跟著改變,看下面的例子就會明白:
var obj1 = {name:"obj1"} var obj2 = obj1 obj2.name = "obj2" console.log(obj1.name) // "obj2"
大家可以執(zhí)行一下上面的代碼,打印obj1.name的時(shí)候輸出"obj2",這就是因?yàn)閷ο笫且妙愋偷淖兞俊?/p> JavaScript內(nèi)置函數(shù)和對象
js中內(nèi)置了一些函數(shù)和對象,很多語言都會有內(nèi)置的方法,直接可以調(diào)用開發(fā)。
根據(jù)ECMAscript(javascript語法標(biāo)準(zhǔn))提供的內(nèi)置函數(shù)包括Object、Array、Boolean、Number、String、Function、Date、Regexp和Error。內(nèi)置對象包括Math和JSON。
注意:javascript基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像Window、Navigator那是瀏覽器提供給我們的。還有一點(diǎn)前面的集中都是內(nèi)置函數(shù)而不是內(nèi)置對象,最后的Math和JSON是內(nèi)置對象,這個(gè)在我們以后的章節(jié)講原型鏈的時(shí)候就明白了,這里先記住就OK了。幾個(gè)常見問題 何時(shí)使用使用==何時(shí)使用===
這個(gè)問題大家應(yīng)該都不陌生,在開發(fā)或者面試中會經(jīng)常碰見的問題。那么答案到底是什么呢?
首先看到這個(gè)問題的時(shí)候先不要去想到底那些情況使用==那些情況使用===,我們應(yīng)該首先去想這個(gè)問題背后涉及到那些知識點(diǎn)。很顯然,這里考的就是強(qiáng)制類型轉(zhuǎn)換,在使用==得時(shí)候會強(qiáng)制類型轉(zhuǎn)換,而使用===的時(shí)候不會發(fā)生強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換大家應(yīng)該都知道。下面我們總結(jié)一下:
在if()條件判斷中0、""、NaN、null、undefined、false都會轉(zhuǎn)為false,判斷對象的一個(gè)屬性存在可以使用如下語法:
var obj = {} if(obj.name == null){...} // 相當(dāng)于obj.name === null || obj.name === undefined /* 該方法只適用于判斷對象的屬性,不能用于直接判斷變量是否存在 */ if(someVal){...} // 這里瀏覽器會報(bào)錯(cuò)
標(biāo)準(zhǔn)答案是:只有在判斷一個(gè)對象的屬性是否存在的時(shí)候使用==,其他都使用===。
typeof能否準(zhǔn)確判斷變量類型這里首先想到的是對typeof和變量類型的理解,由于typeof只能區(qū)分基本類型的變量,所以不能準(zhǔn)確的判斷變量類型。
Undefined -- Undefined Boolean -- Boolean Number -- Number String -- String ---------- Object -- Object Function -- Function Array -- Object null -- Object
所以答案是typeof只能判斷值類型的變量,不能判斷引用類型的變量,要想準(zhǔn)確判斷變量的類型,可以在以后的原型的章節(jié)中介紹
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/107110.html
摘要:內(nèi)置函數(shù)和對象中內(nèi)置了一些函數(shù)和對象,很多語言都會有內(nèi)置的方法,直接可以調(diào)用開發(fā)。根據(jù)語法標(biāo)準(zhǔn)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。強(qiáng)制類型轉(zhuǎn)換大家應(yīng)該都知道。 js基礎(chǔ) - 變量 *大家對js一定不會陌生,入門很簡單(普通入門),很多人通過網(wǎng)絡(luò)資源、書籍、課堂等很多途徑學(xué)習(xí)js,但是有些js基礎(chǔ)的只是往往被大家遺漏,本章就從js變量...
摘要:在此,我們首先根據(jù)變量的作用域,將變量劃分為三級,具體是全局變量局部變量和參數(shù)變量。 【摘要】本文是專為JavaScript入門者而總結(jié)的,總體上將JavaScript的基礎(chǔ)部分分成了九大塊,分別是變量、運(yùn)算符、數(shù)組、流程控制結(jié)構(gòu)、字符串函數(shù)、函數(shù)基礎(chǔ)、DOM操作基礎(chǔ)、文檔對象模型DOM和正則表達(dá)式。 【關(guān)鍵字】變量、運(yùn)算符、數(shù)組、流程控制結(jié)構(gòu)、函數(shù)、DOM、正則表達(dá)式。 本篇文章的主...
摘要:前言這段時(shí)間一直在消化作用域鏈和閉包的相關(guān)知識。而作用域鏈則是這套規(guī)則這套規(guī)則的具體運(yùn)行。是變量對象的縮寫那這樣放有什么好處呢我們知道作用域鏈保證了當(dāng)前執(zhí)行環(huán)境對符合訪問權(quán)限的變量和函數(shù)的有序訪問。 前言:這段時(shí)間一直在消化作用域鏈和閉包的相關(guān)知識。之前看《JS高程》和一些技術(shù)博客,對于這些概念的論述多多少少不太清楚或者不太完整,包括一些大神的技術(shù)文章。這也給我的學(xué)習(xí)上造成了一些困惑,...
摘要:申明變量變量名以分號結(jié)束。如果一定要使用點(diǎn)的話,需要改變成駝峰式命名法?;A(chǔ)篇練習(xí)看完以上的小伙伴,可以看兩個(gè)例子的效果,試著做一下。練習(xí)一點(diǎn)擊按鈕,設(shè)置方塊大小練習(xí)二點(diǎn)擊按鈕,增加或減小字體大小 1.JS存放在代碼中的位置 1.JS寫在行間 hello world 優(yōu)點(diǎn):直接,簡單 缺點(diǎn):不方便復(fù)用和維護(hù),不符合結(jié)構(gòu)行為分離規(guī)范 2.JS寫在script ( 一般寫在body...
閱讀 3149·2021-09-22 15:20
閱讀 2670·2019-08-30 15:54
閱讀 2038·2019-08-30 14:06
閱讀 3186·2019-08-30 13:05
閱讀 2550·2019-08-29 18:36
閱讀 626·2019-08-29 15:10
閱讀 582·2019-08-29 11:17
閱讀 889·2019-08-28 18:11