JS基礎(chǔ)隨筆(菜鳥必看篇)
在學(xué)習(xí)的過程中總會(huì)一次次的冒出以前囫圇吞棗的地方,下面將今天學(xué)到的一下知識(shí)點(diǎn)記錄下來方便以后查看。
JavaScript中的數(shù)據(jù)類型
簡(jiǎn)單(基本)數(shù)據(jù)類型:Number、String、Boolean、Undefined、Null
復(fù)雜(引用)數(shù)據(jù)類型: Object、Array、Date、function等
下面介紹一下簡(jiǎn)單(基本)數(shù)據(jù)類型和復(fù)雜(引用)數(shù)據(jù)類型的區(qū)別:
簡(jiǎn)單數(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)槿肿饔糜?。所以只有全局作用域?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)擊事件輪播圖的簡(jiǎn)單實(shí)現(xiàn))
- JavaScript基礎(chǔ)知識(shí)點(diǎn)歸納(推薦)
- Javascript基礎(chǔ)學(xué)習(xí)筆記(菜鳥必看篇)
- JavaScript基礎(chǔ)重點(diǎn)(必看)
- JavaScript基礎(chǔ)教程——入門必看篇
- javaScript基礎(chǔ)詳解
相關(guān)文章
JavaScript中Function()函數(shù)的使用教程
這篇文章主要介紹了JavaScipt中Function()函數(shù)的使用教程,是JavaScipt入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06
簡(jiǎn)介JavaScript中strike()方法的使用
這篇文章主要介紹了簡(jiǎn)介JavaScript中strike()方法的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06
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
每日十條JavaScript經(jīng)驗(yàn)技巧(一)
本文是每日十條JavaScript經(jīng)驗(yàn)技巧系列文章的第一篇,給大家匯總介紹一些在JavaScript使用過程中的注意事項(xiàng),非常的簡(jiǎn)單,都是個(gè)人在平時(shí)項(xiàng)目中的一點(diǎn)小小的總結(jié),希望對(duì)大家能夠有所幫助2016-06-06
JavaScript中的Repaint和Reflow用法詳解
這篇文章主要介紹了JavaScript中的Repaint和Reflow用法詳解,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-07-07
淺談JavaScript 標(biāo)準(zhǔn)對(duì)象
下面小編就為大家?guī)硪黄獪\談JavaScript 標(biāo)準(zhǔn)對(duì)象。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06

