JS基礎(chǔ)隨筆(菜鳥必看篇)
在學(xué)習(xí)的過程中總會(huì)一次次的冒出以前囫圇吞棗的地方,下面將今天學(xué)到的一下知識(shí)點(diǎn)記錄下來方便以后查看。
JavaScript中的數(shù)據(jù)類型
簡單(基本)數(shù)據(jù)類型:Number、String、Boolean、Undefined、Null
復(fù)雜(引用)數(shù)據(jù)類型: Object、Array、Date、function等
下面介紹一下簡單(基本)數(shù)據(jù)類型和復(fù)雜(引用)數(shù)據(jù)類型的區(qū)別:
簡單數(shù)據(jù)類型:在棧內(nèi)直接存儲(chǔ)值,如下圖所示
復(fù)雜數(shù)據(jù)類型:在棧內(nèi)存儲(chǔ)引用,如下圖
在了解以上兩種數(shù)據(jù)類型的存儲(chǔ)方式之后可以區(qū)分兩者的不同,可通過做以下的練習(xí):
var a =10; var b = a; //問:當(dāng)改變a的值后,b的值是否發(fā)生改變 a=20; console.log(b); // 10
var s1 = new Object(); var s2 = s1; //問:改變s1的屬性后,s2相同的屬性是否改變 s1.name = "mh"; console.log(s2.name); //mh
function f2(arr) { arr = [9,8,7,6,5];//產(chǎn)生新的對(duì)象 arr[0]=-100; } var array = [1,2,4,7,5]; f2(array); console.log(array[0]);// 1
JavaSript中的變量提升,function聲明以及變量作用域
首先先看以下下面的一道面試題:
var num = 10; fun(); function fun() { console.log(num); var num =20; }
在沒有學(xué)習(xí)之前我會(huì)直接回答為10,現(xiàn)在學(xué)習(xí)JavaScript中的預(yù)編譯概念知道了var關(guān)鍵字的提升概念以及function的聲明概念知道了以上代碼與下面代碼等量:
var num;//全局作用域 遇到var和function 提升 function fun() { var num ; //局部做用戶 遇到var 提升 console.log(num); num =20; } num = 10; fun();
再看下面這道題:
//問題:為什么會(huì)出現(xiàn)下面的錯(cuò)誤? //Uncaught TypeError:fnName is not a function console.log(fnName(1,2)); var fnName = function (a,b) { return a + b; }
以上代碼等同于以下代碼:
var fnName; console.log(fnName(1,2)); fnName = function (a,b) { return a + b; }
可以看到因?yàn)閒unction在等號(hào)右面所以只會(huì)對(duì)var進(jìn)行提升,從而會(huì)報(bào)“Uncaught TypeError:fnName is not a function”錯(cuò)誤。
了解變量的作用域可以看以下代碼:
f1(); console.log(c); console.log(b); console.log(a); function f1() { var a = b = c = 20; console.log(c); console.log(b); console.log(a); }
對(duì)于var a=b=c=20; 這類連續(xù)賦值,在局部作用域內(nèi)只會(huì)對(duì)a再聲明,而b、c的作用域?yàn)槿肿饔糜颉K灾挥腥肿饔糜騼?nèi)的a報(bào)錯(cuò)為"Uncaught ReferenceError: a is not defined"。
以上這篇JS基礎(chǔ)隨筆(菜鳥必看篇)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- javascript基礎(chǔ)知識(shí)講解
- Three.js基礎(chǔ)部分學(xué)習(xí)
- js基礎(chǔ)之DOM中document對(duì)象的常用屬性方法詳解
- js基礎(chǔ)之DOM中元素對(duì)象的屬性方法詳解
- 淺析JS中對(duì)函數(shù)function的理解(基礎(chǔ)篇)
- js 基礎(chǔ)篇必看(點(diǎn)擊事件輪播圖的簡單實(shí)現(xiàn))
- JavaScript基礎(chǔ)知識(shí)點(diǎn)歸納(推薦)
- Javascript基礎(chǔ)學(xué)習(xí)筆記(菜鳥必看篇)
- JavaScript基礎(chǔ)重點(diǎn)(必看)
- JavaScript基礎(chǔ)教程——入門必看篇
- javaScript基礎(chǔ)詳解
相關(guān)文章
javascript學(xué)習(xí)指南之回調(diào)問題
回調(diào)函數(shù)被認(rèn)為是一種高級(jí)函數(shù),一種被作為參數(shù)傳遞給另一個(gè)函數(shù)(在這稱作"otherFunction")的高級(jí)函數(shù),回調(diào)函數(shù)會(huì)在otherFunction內(nèi)被調(diào)用(或執(zhí)行)?;卣{(diào)函數(shù)的本質(zhì)是一種模式(一種解決常見問題的模式),因此回調(diào)函數(shù)也被稱為回調(diào)模式。2016-04-04優(yōu)化RequireJS項(xiàng)目的相關(guān)技巧總結(jié)
這篇文章主要介紹了優(yōu)化RequireJS項(xiàng)目的相關(guān)技巧總結(jié),RequireJS是一個(gè)人氣JavaScript庫,需要的朋友可以參考下2015-07-07JavaScript將數(shù)組轉(zhuǎn)為對(duì)象與JSON對(duì)象字符串轉(zhuǎn)數(shù)組方法詳解
這篇文章主要介紹了JavaScript將數(shù)組轉(zhuǎn)為對(duì)象與JSON對(duì)象字符串轉(zhuǎn)數(shù)組方法詳解,需要的朋友可以參考下2022-10-10JavaScript的函數(shù)式編程基礎(chǔ)指南
這篇文章主要介紹了JavaScript的函數(shù)式編程基礎(chǔ)指南,雖然JavaScript被許多人一再強(qiáng)調(diào)面向?qū)ο?但js中卻沒有類,而本文所展現(xiàn)的函數(shù)主導(dǎo)的js編程則同樣可以很爽,需要的朋友可以參考下2016-03-03JavaScript bold方法入門實(shí)例(把指定文字顯示為粗體)
這篇文章主要介紹了JavaScript字符串對(duì)象的bold方法入門實(shí)例,bold方法用于把指定文字顯示為粗體,需要的朋友可以參考下2014-10-10Javascript動(dòng)態(tài)引用CSS文件的2種方法介紹
這篇文章主要介紹了Javascript動(dòng)態(tài)加載CSS文件的2種方法,經(jīng)常使用和非常實(shí)用的方法,需要的朋友可以參考下2014-06-06JavaScript獲取tr td 的三種方式全面總結(jié)(推薦)
這篇文章主要介紹了JavaScript獲取tr td 的三種方式,具體操作步驟大家可查看下文詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08JavaScript cookie詳解及簡單實(shí)例應(yīng)用
這篇文章主要介紹了JavaScript cookie詳解及簡單實(shí)例應(yīng)用的相關(guān)資料,這里對(duì)js cookie 的介紹及基本屬性和簡單應(yīng)用做了詳解,需要的朋友可以參考下2016-12-12