js第一個(gè)星期

什么是一個(gè)變量

變量就是一個(gè)容器

如何創(chuàng)建一個(gè)變量

var 容器的名稱

var x;? 創(chuàng)建一個(gè)叫x的容器

命名規(guī)則

名字區(qū)分大小寫

?不可以用漢字

可以是使用英文大小寫 - $

不能用數(shù)字開(kāi)頭

不可用關(guān)鍵字和保留字作為變量名

關(guān)鍵字和保留字是js在開(kāi)發(fā)的時(shí)候赁酝,自己內(nèi)部使用過(guò)的一些具有某些特征的單詞番枚,

?這些單詞被js使用了捣辆,我們?cè)诙x變量的時(shí)候就不能在使用了

賦值符的右邊是值

? ? ? ? ? ? ? ? 左邊是變量

賦值符將右邊的值放到左邊的變量中存起來(lái)

自增(++)和自減(--)

var a=2;

a++;

放前面后面都一樣都表示自增掠剑;

console.log(a);

當(dāng)自增自減運(yùn)算碰到輸出的時(shí)候苍鲜,++在前面就先進(jìn)行++自增柜裸,然后再輸出

如果++在后面错森,就是先輸出這個(gè)值峻仇,然后再進(jìn)行++自增

?++在前面和后面的區(qū)別俄讹,還有別的情況:進(jìn)行數(shù)學(xué)運(yùn)算哆致、輸出、賦值的時(shí)候

總結(jié):

?如果自增自減運(yùn)算碰到 輸出患膛、賦值摊阀、數(shù)學(xué)運(yùn)算的時(shí)候,符號(hào)在前面就先進(jìn)行自增自減運(yùn)算,然后進(jìn)行輸出胞此、賦值臣咖、數(shù)學(xué)運(yùn)算,如果符號(hào)在后面漱牵,

就是先進(jìn)行輸出夺蛇、賦值、數(shù)學(xué)運(yùn)算酣胀,然后再進(jìn)行自增自減運(yùn)算

如果是自己?jiǎn)为?dú)的一個(gè)變量進(jìn)行自增自減的時(shí)候刁赦,符號(hào)放在變量前面和后面沒(méi)有區(qū)別

字符串的拼接:

var a=1;

var b='23';

var c=a+b;

+只有左右兩邊有一個(gè)是字符串,就會(huì)使這兩個(gè)字符串連在一起組成一個(gè)大的字符串

console.log(c);? 輸出字符串的123

var a;

var b=null;?

var c=a+b;

?console.log(c);? 輸出NAN

var a='qaaz'

var b='cvv'

var c=a+b;

console.log(c);? 形成新的字符串qaazcvv

將數(shù)據(jù)顯示在頁(yè)面中

alert數(shù)據(jù) 將數(shù)據(jù)以彈窗的形式在頁(yè)面顯示 通常在給用戶做提示

document.write(a); //以文本的形式顯示在網(wǎng)頁(yè)中

confirm.log(a);// 提示用戶是否確定和取消的彈窗闻镶,提示用戶是否確定進(jìn)行下一步操作? 例:

confirm("你確定要?jiǎng)h除嗎");

var a=confirm("你確定要?jiǎng)h除嗎");

prompt(a);提示用戶可以輸入的彈窗

例:var a=prompt("輸入你的銀行卡密碼:");

數(shù)學(xué)運(yùn)算符

符號(hào)有+? -? *? /? %(取余的)

數(shù)據(jù)類型

typeof?用來(lái)檢測(cè)數(shù)據(jù)的類型

js有5種數(shù)據(jù)類型:number(數(shù)字類型)甚脉、string(字符串類型)、underfined(未定義型)儒溉、boolean(布爾類型 只有true? false兩個(gè)值用來(lái)描述事物的兩面性)宦焦、object(對(duì)象類型)

數(shù)字類型number包含哪些數(shù)據(jù) 正數(shù),負(fù)數(shù)顿涣。整數(shù),小數(shù) 酝豪,0

string字符串 一串字符組合起來(lái)用引號(hào)引起來(lái)涛碑,單引號(hào)雙引號(hào)都行

布爾類型:編程中,有一種類型用來(lái)描述對(duì)與錯(cuò)孵淘,真和假蒲障,表示事物的兩面性 boolean,?布爾類型只有兩個(gè)值:true? false

對(duì)象類型 object

var a=[]; 數(shù)組

var a={}; json對(duì)象

var a=null; 表示空 什么都沒(méi)有

數(shù)據(jù)類型轉(zhuǎn)number

1.var b=Number(a); // 將轉(zhuǎn)換的結(jié)果賦值給了子變量b

?console.log(b);

console.log(typeof b);

2.parseInt(被轉(zhuǎn)換的數(shù)據(jù)); // 支取整數(shù)部分

?var b=parseInt(a);

console.log(b);?

3.parseFloat(被轉(zhuǎn)換的數(shù)據(jù)); 將數(shù)據(jù)轉(zhuǎn)成數(shù)字中的小數(shù) 沒(méi)有變

var b=parseFloat(a);

console.log(b);

4.Math.round(被轉(zhuǎn)換的數(shù)據(jù)); 將數(shù)據(jù)轉(zhuǎn)成數(shù)字并四舍五入

? ? var b=Math.round(a);

? ? console.log(b);

總結(jié):

數(shù)字型的字符串瘫证,Number和parseFloat轉(zhuǎn)換的結(jié)果時(shí)一樣的揉阎, parseInt時(shí)支取整數(shù)部分。

不是純數(shù)字的字符串背捌,但是由數(shù)字開(kāi)頭的毙籽,Nunmber和Math.round轉(zhuǎn)成的時(shí)NaN,也是parseInt

取整,parseFloat取小數(shù)部分

不是由數(shù)字開(kāi)頭的字符串毡庆,被轉(zhuǎn)換的結(jié)果都是NaN坑赡。

數(shù)轉(zhuǎn)字符串

var a=10; //a是數(shù)字類型

var b=String(a);? ? // String(被轉(zhuǎn)換的數(shù)據(jù))

console.log(b);

toString() // 被轉(zhuǎn)換的額數(shù)據(jù) .toString

var b=a.toString();

console.log(b);

布爾值轉(zhuǎn)字符串

var a =true;

var b =String(a);

console.log(b);

underfined轉(zhuǎn)字符串

var a;

var b=String(a);

console.log(b);

null轉(zhuǎn)字符串

var a=null;

var b=String(a);

console.log(b);

數(shù)字轉(zhuǎn)布爾類型

var a=1;

var b=Boolean(a);

console.log(b);

數(shù)字轉(zhuǎn)布爾類型,除了0都是ture 0是false

字符串轉(zhuǎn)布爾類型

var a='';

var b=Boolean(a);

console.log(b);

字符串轉(zhuǎn)成布爾類型么抗,除了空字符串是false 其他都是true

undefined轉(zhuǎn)布爾類型??-false

var a;

?var b=Boolean(a);

console.log(b);

null轉(zhuǎn)布爾 -false

? ? var a=null;

? ? var b=Boolean(a);

? ? console.log(b);

比較符運(yùn)算

比較運(yùn)算:> < >= <= ==

==相等 比較兩個(gè)容器中的值是否一樣 也是布爾值顯示

===? ?全等? 先比較兩個(gè)值的類型是否相等毅否,如果不相等就直接false,如果相等了在進(jìn)行比較值

????????????主體到內(nèi)容都要一樣

!=絕對(duì)不等于 類型同上

賦值運(yùn)算

=賦值符右邊是值 左邊是變量 作用是將右邊的值賦給左邊的變量

+=代表相加以后的結(jié)果重新賦值給這個(gè)變量(其他運(yùn)算同理)

邏輯運(yùn)算符

||? ?表示或者? ? ? ?只有全假才假

&&? 表示并且? ? ? 一假即假

if 單分之 只有一條路可以做 那么就選擇不走

語(yǔ)法

?if(條件-最終結(jié)果必須是一個(gè)布爾類型){

? ? ? ? // 條件如果是ture ,就執(zhí)行這里的代碼

? ? ? ? // 條件如果是false ,就沒(méi)有顯示

? }

有兩條路可以走 選擇其中一條走 雙分支

語(yǔ)法

if(結(jié)果是布爾類型的條件){

? ? 條件是true的時(shí)候執(zhí)行的代碼

}else{

? ? 條件是false的時(shí)候執(zhí)行的代碼

}

多分支語(yǔ)法

if(條件){

//? ? 條件為true的時(shí)候執(zhí)行的代碼

}

else if(條件){

//? ? 如果條件為true的時(shí)候執(zhí)行的代碼

?}

else if(){

?}...

多分枝

switch(變量- 得到一個(gè)值){

? ? case 值1:

? ? 如果小括號(hào)里的值和值1相等了 就執(zhí)行代碼

? ? break;

? ? case 值2:

? ? 如果小括號(hào)里的值和值2相等了 就執(zhí)行代碼

? ? break;

? ? case 值3:

? ? 如果小括號(hào)里的值和值3相等了 就執(zhí)行代碼

? ? break;

? ? ....

? ? default:

? ? 上面的值都不相等時(shí) 蝇刀,執(zhí)行的代碼

}

注意:代碼中螟加,如果要判斷一個(gè)區(qū)間,使用if多分支,

如果判斷具體的值是否相等使用switch語(yǔ)句捆探;

switch 總結(jié)

1.switch只能判斷是否相等

2.判斷使用===來(lái)進(jìn)行

?3.break是來(lái)終止switch執(zhí)行甸昏,去掉以后,就會(huì)執(zhí)行下一個(gè)case

分支嵌套

if(){

? ? ? ? if(){

? ? ? ? }

? ? }

總結(jié):

switch和if都能進(jìn)行多分支的判斷

switch和if的區(qū)別徐许;

1.switch只能判斷是否相等施蜜,使用絕對(duì)等于===來(lái)判斷的

2.break可以省略---造成執(zhí)行了第一個(gè)case之后,執(zhí)行第二個(gè)case

3.switch 在分支大于3個(gè)的時(shí)候雌隅,效率要比if多分支高

? ? // 如果判斷某個(gè)值的翻默,并且分支結(jié)果大于3個(gè)的,使用swith

隱式轉(zhuǎn)化

字符串拼接時(shí)

var a=11;

var b="222";

var c=a+b;

加號(hào)左右兩邊有一個(gè)是字符串恰起,另一個(gè)也會(huì)悄悄的轉(zhuǎn)成字符串

console.log(c);

數(shù)學(xué)運(yùn)算時(shí)

var a=10;

var b="2";

var c=a-b;

數(shù)字才能進(jìn)行數(shù)學(xué)運(yùn)算修械,這個(gè)時(shí)候字符串悄悄的的轉(zhuǎn)成了數(shù)字;

除了+ 別的數(shù)學(xué)運(yùn)算检盼,都會(huì)將兩邊的數(shù)字轉(zhuǎn)成數(shù)字進(jìn)行運(yùn)算

console.log(c);

進(jìn)行比較的時(shí)候

var a=prompt('輸入數(shù)字');

var result=a>2;

字符串和數(shù)字不具有大小的可比性

console.log(result);

?比較運(yùn)算的時(shí)候肯污,左右兩邊只要有一個(gè)數(shù)字。另一個(gè)也會(huì)轉(zhuǎn)成數(shù)字進(jìn)行比較

var a='5';

var b='20';

console.log(a>b);

這兩個(gè)時(shí)字符串的比較吨枉,沒(méi)有一個(gè)時(shí)數(shù)字蹦渣,所以不能隱式轉(zhuǎn)換

如果字符串轉(zhuǎn)成數(shù)字成了NaN

1.NaN和任何數(shù)字都沒(méi)辦法比較大小跟任何數(shù)字進(jìn)行任何比較都是false

2.NaN自己也不等于自己

3.NaN的類型是數(shù)字

var a = '文字';

var b = 2;

// console.log(a==b); // 文字也轉(zhuǎn)成數(shù)字了,只不過(guò)是NaN

隱形轉(zhuǎn)換:

? ? ? ? 1.字符串拼接時(shí):如果+左右兩邊有一個(gè)字符串貌亭,另一個(gè)也會(huì)轉(zhuǎn)成字符串

? ? ? ? 2.數(shù)學(xué)運(yùn)算時(shí):非+法的數(shù)學(xué)運(yùn)算柬唯,左右兩邊有一個(gè)字符串 會(huì)將符號(hào)左右兩邊的數(shù)據(jù)轉(zhuǎn)成數(shù)字

? ? ? ? 3.比較運(yùn)算時(shí):如果比較的兩個(gè)數(shù)據(jù)有一個(gè)是數(shù)字,另一個(gè)也會(huì)轉(zhuǎn)成數(shù)字

? ? ? ? 4.將數(shù)據(jù)放在分支結(jié)構(gòu)的小括號(hào)中圃庭,會(huì)轉(zhuǎn)成布爾值

document.write('加粗<br>這里有字</br>');

想在文本上輸出標(biāo)簽锄奢,使用document.write();來(lái)輸出,并且將這個(gè)標(biāo)簽當(dāng)作一個(gè)字符串

while 語(yǔ)法來(lái)事項(xiàng)循環(huán)

語(yǔ)法:

while(條件){

? ? 要重復(fù)執(zhí)行的 代碼段

}

例:

var a=1;

while (a<=10){

? ? document.write("從頭開(kāi)始學(xué)了" +"<br>");

? ? a++;每次執(zhí)行后讓計(jì)數(shù)器+1邏輯

}

do while

語(yǔ)法:

? ? do{

? ? ? ? 代碼段-首先執(zhí)行一次剧腻,在進(jìn)行while

? ? }while(條件)

先執(zhí)行一次拘央,執(zhí)行以后,就和while的流程一樣了

(不管條件成不成立?都會(huì)執(zhí)行一次)

for循環(huán)

for 語(yǔ)法:

三要素? 1.變量的初始值

? ? ? ? ? ? ?2.條件

? ? ? ? ? ? 3.變量的變化

?for(三要素){

}

例:

通過(guò)for循環(huán)來(lái)輸出 1~5

?for(var a=1;a<=5;a++){

? ? document.write('單身');

? ? document.write('<br>');

}

break; // 停止循環(huán)

continue;// 跳過(guò)當(dāng)前循環(huán) 到下一個(gè)循環(huán)

循環(huán)嵌套

就是在往循環(huán)里在寫一次循環(huán)

注意 :例外層循環(huán)變量不一樣

例:

九九乘法表

?for(var i=1;i<=9;i++){

? ? for(var a=1;a<=i;a++){

? ? ? ? document.write(a+"*"+i+"="+a*i+"&nbsp;&nbsp;&nbsp;&nbsp;")

? ? }document.write("<br>")

}

函數(shù)

函數(shù) 函數(shù)是我的一個(gè)數(shù)據(jù)類型

?函數(shù)的作用就是把一段功能性的代碼放到一個(gè)空間里? ? 拿出來(lái)就可以用

1.申明式函數(shù)

語(yǔ)法:function 名字(){

}

注意:

? ? ? ? 1.在聲明式中只有在調(diào)用的這個(gè)函數(shù)的時(shí)候书在,里面的代碼才會(huì)執(zhí)行

function :就是一個(gè)生命函數(shù)的關(guān)鍵字

名字:就是給這段空間自定義一個(gè)名字?

():存放參數(shù)的位置

? ?{}:要存放的代碼

function fn(){

? ? console.log("聲明式")

}

2.賦值式

語(yǔ)法:var 名字 = function(){

}

var:定義變量的關(guān)鍵字

名字:就是給這個(gè)函數(shù)定義的名字

():存放參數(shù)的位置

{}:要存放的代碼

var fun = function(){

? ? console.log("這是賦值式")

}

函數(shù)的調(diào)用

? ? 1.直接調(diào)用

? ? 如實(shí)讓這個(gè)函數(shù)內(nèi)部的代碼執(zhí)行

? ? 直接寫? ----》函數(shù)名()

? ? ():? 就是調(diào)用的意思

? ? 2.依賴行為調(diào)用?

? ? ? ? 在一個(gè)頁(yè)面里面

調(diào)用時(shí)機(jī)上的區(qū)別

當(dāng)調(diào)用一個(gè)函數(shù)的時(shí)候 方式都是一樣的 但是調(diào)用的事件灰伟,取決使用哪種方式定義函數(shù)?

申明式函數(shù)(function()fn {})

可以在申明之情調(diào)用 ,也可以在聲明之后盜用

賦值式函數(shù)? (var fun )

只能在申明之后調(diào)用? ? 如果在生命聲明之前調(diào)用的話是is not a function

申明的不是一個(gè)函數(shù)

函數(shù)的參數(shù)

1.形參

就是寫在函數(shù)定義時(shí)候的()里面的

可以寫對(duì)個(gè)蕊温,多個(gè)的時(shí)候中間使用逗號(hào)(袱箱,)分隔

就是一個(gè)只用在函數(shù)內(nèi)部使用的變量

2.實(shí)參

就是寫在函數(shù)調(diào)用的時(shí)候的()里面的

可以寫對(duì)個(gè),多個(gè)的時(shí)候中間使用逗號(hào)(义矛,)分隔

是一個(gè)準(zhǔn)確的數(shù)據(jù)

用來(lái)給對(duì)應(yīng)的新參賦值的

參數(shù)的個(gè)數(shù)

1.新參和實(shí)參一樣多

? ? 按照從左到右 一一進(jìn)行賦值

2.形參比實(shí)參多

? ? 前面一一對(duì)應(yīng)? 后面都出來(lái)的形參沒(méi)有實(shí)參賦值?

? ? 在函數(shù)內(nèi)部調(diào)用的時(shí)候 就是一個(gè)沒(méi)有賦值的變量? 就是undefind

3.實(shí)參比形參多

? ? 前面的一一對(duì)應(yīng)? 后面多出來(lái)的就 沒(méi)有形參接受

arguments

函數(shù)內(nèi)部的一個(gè)特殊的變量 arguments

在每一個(gè)函數(shù)內(nèi)部? 都有一個(gè)天生的變量

不需要我們的定義? 直接用就行

arguments? 表示所有實(shí)參的集合

arguments: 會(huì)把所有的實(shí)參按照從左到右的順序依次排序

給每一個(gè)實(shí)參一個(gè)編號(hào) (索引/下標(biāo))

這個(gè)編號(hào)(索引/下標(biāo))是從0開(kāi)始的 依次遞增

arguments[編號(hào)]? 這樣就可以的到一個(gè)準(zhǔn)確的值

arguments還有一個(gè)屬性 交length

表示arguments 這個(gè)集合的長(zhǎng)度 发笔,也就是這里面有多個(gè)數(shù)據(jù)

值是一個(gè)number 數(shù)據(jù)類型的數(shù)字

如果要得到這個(gè)屬性就寫arguments.length

function fn(){

? ? console.log(arguments)

? ? console.log(arguments.length)//得到數(shù)據(jù)的個(gè)數(shù)

? ? console.log(arguments[2])//這樣就拿到了下標(biāo)為2的值

}

fn(100,200,300)

使用循環(huán)遍歷真?zhèn)€arguments 獲得到每一個(gè)數(shù)據(jù)

因?yàn)閍rguments的所索引(下標(biāo))是按照從0開(kāi)始的

可以使用循環(huán)的方式來(lái)遍歷 arguments

函數(shù)的返回值

返回值:也就是一個(gè)函數(shù)的結(jié)果

在函數(shù)里面添加返回值使用return關(guān)鍵字

return 就是在函數(shù)里面使用的

返回關(guān)鍵字

作用:

? ? 1.作為函數(shù)的返回值使用

? ? 2.打斷函數(shù)不在繼續(xù)執(zhí)行

? ? 當(dāng)函數(shù)內(nèi)部的代碼 使用 return關(guān)鍵字以后? return后面的代碼就不執(zhí)行了 直接結(jié)束函數(shù)

? ? break 是結(jié)束循環(huán)的關(guān)鍵字

? ? return 是結(jié)束函數(shù)的關(guān)鍵字

function fn(){

? ? console.log("第一行大媽");

? ? console.log("第一行大媽");

? ? return;

? ? //后面的代碼就不在執(zhí)行了

? ? console.log("第一行大媽");

? ? console.log("第一行大媽");

}

fn()

預(yù)解析

預(yù)解析? ? ?就是js的執(zhí)行過(guò)程

什么是預(yù)解析?

? ? 預(yù):在所有js 代碼執(zhí)行之前

? ? 解析:對(duì)整篇js代碼進(jìn)行通讀并解釋(瀏覽器在解析)

解析了什么內(nèi)容(只有兩種內(nèi)容)

? ? 1.var 聲明的變量

? ? ? ? var num

? ? 2.聲明式函數(shù)(不是賦值式函數(shù))

? ? function fn(){}

怎么解析的

1.var 聲明的變量

? ? 在所有js代碼執(zhí)行之前 先把變量聲明好

? ? 在開(kāi)始執(zhí)行代碼

2.申明式函數(shù)

? ? 在所有js 代碼執(zhí)行之前 先把函數(shù)名申明好 ,

? ? 并且給這個(gè)函數(shù)名賦值為一個(gè)函數(shù)凉翻,在開(kāi)始執(zhí)行代碼

申明式函數(shù)

function fn(){}

預(yù)解析這個(gè)代碼

1.與解析的過(guò)程

告訴瀏覽器了讨,fn是一個(gè)可以使用的名字

并且fn 這個(gè)名字是一個(gè)函數(shù)

賦值式 函數(shù)的與解析

? ? 賦值式函數(shù)不會(huì)按照申明式函數(shù)的與解析進(jìn)行

? ? 而是按照var的與解析規(guī)則進(jìn)行

? ? var fn = function(){}

//fn() // fn is not a function

var fn = function (){

? ? console.log('我是 fn 函數(shù)')

}

fn()? //在這里調(diào)用就可以答應(yīng)出來(lái) 也就是賦值式不可以上下都用? 但是申明式 就可以

預(yù)解析無(wú)節(jié)操

? ? 1.不管if條件是不是成立? 寫在{}里面的代碼都會(huì)進(jìn)行預(yù)解析

? ? 只是條件不成立的時(shí)候 ,不會(huì)執(zhí)行{}里面的賦值操作

? ? 2.當(dāng)在函數(shù)內(nèi)部的時(shí)候 ,return 后面的代碼雖然不會(huì)執(zhí)行但是會(huì)進(jìn)行預(yù)解析

預(yù)解析的優(yōu)先級(jí)

? ? 當(dāng)定義一個(gè)變量好一個(gè)申明式函數(shù)的時(shí)候

? ? 如果變量名和函數(shù)名沖名? 在預(yù)解析的時(shí)候 以函數(shù)為準(zhǔn)

作用域

? ? 一個(gè)東西可以生效的范圍

? ? 東西就是變量(變量名前计,函數(shù)名)

? ? 既是一個(gè)變量可以生效的范圍

作用域分類

? ? 兩類:

? ? 1.全局作用域

? ? 一個(gè)html 就是一個(gè)全局作用域

? ? 打開(kāi)頁(yè)面的時(shí)候胞谭,作用域就生成了 直到關(guān)閉頁(yè)面為止

? ? 2.局部作用域(私有作用域)

? ? 只有函數(shù)生成局部作用域

? ? 每一個(gè)函數(shù)就是一個(gè)私有作用域

作用域的上下級(jí)關(guān)系

? ? 全局作用域最大,所有的私有作用域都是在全局作用域下的

? ? 函數(shù)生成的私有作用域 函數(shù)寫在哪個(gè)作用域里面就是哪個(gè)作用域的子集

//這個(gè)位置就是全局作用域

function fn(){

//這個(gè)位置就是全局作用域的一個(gè)叫fn的子集作用域

? ? function? fun() {

? ? ? ? //這個(gè)位置就是全局作用域下的fn 私有作用域下的 fun私有作用域?

? ? }

}

作用域的規(guī)則

1.定義

有 var關(guān)鍵字

或者 function 函數(shù)名(){}

var num? ? ? ? ? ? //定義變量

function fn() {}? ? //定義變量

2.使用

當(dāng)需要拿到一個(gè)變量的值去使用的時(shí)候

console.log(num)? //使用num 的值 打印出來(lái)

1+num? ? ? ? //使用num 的值 去加1

var abd = bun //使用num 的值 賦值給ABC

3.賦值

個(gè)一個(gè)變量進(jìn)行賦值的操作

num =100;? ? ? //把100賦值給num

num = function (){}? ? //要把函數(shù)這個(gè)值 賦給num這個(gè)變量

變量定義規(guī)則?

? ? 當(dāng)定義一個(gè)變量的時(shí)候

? ? 把這個(gè)變量定義在哪個(gè)作用域里面

? ? 就只有這個(gè)作用域及其后代作用域才可以使用

? ? 當(dāng)前作用域的所有祖先記作用域不能使用

變量的使用規(guī)則

當(dāng)需要使用一個(gè)變量的時(shí)候

先在自己作用域內(nèi)查找男杈,如果有就是直接使用 丈屹,停止查找

如果沒(méi)有 ,就去上一級(jí)作用域查找? 有就使用 伶棒,停止查找

如果還沒(méi)有 旺垒,就在去上一級(jí)查找直到全局 有就使用 沒(méi)有就undefinde

變量賦值規(guī)則

當(dāng)需要給一個(gè)變量賦值的時(shí)候

先在自己的作用域內(nèi)部查找? 如果有? 就給自己作用域的變量賦值

如果沒(méi)有 ,就向上一級(jí)查找 肤无,如果有就給父級(jí)的變量賦值

如果還沒(méi)有 先蒋,就繼續(xù)向上查找

直到全局作用域都沒(méi)有? 那么就把這個(gè)變量定義為全局變量 ,在進(jìn)行賦值

對(duì)象數(shù)據(jù)類型

? ? 對(duì)象(object):是復(fù)雜數(shù)據(jù)類型的一種

? ? 對(duì)象里面是存貯數(shù)據(jù)的

如何創(chuàng)建一個(gè)空對(duì)象

? ? 1.字面量形式創(chuàng)建對(duì)象

? ? var obj = {}

? ? 2.內(nèi)置構(gòu)造函數(shù)創(chuàng)建對(duì)象

? ? var obj = new obj()

兩種區(qū)別

1. 字面量創(chuàng)建

可以在創(chuàng)建的時(shí)候直接存放一些數(shù)據(jù)放在對(duì)象空間內(nèi)

也可以在后期使用代碼里面添加或刪除

直接在{}里面書寫

? 要起得名 : 內(nèi)容? ? ? ?鍵值對(duì)

? 多個(gè)時(shí) 用逗號(hào)分開(kāi)

2.內(nèi)置構(gòu)造函數(shù)

目前只能在后期用代碼的形式往里添加

//創(chuàng)建一個(gè)空對(duì)象 對(duì)象空間起名為obj 直接創(chuàng)建

var obj = {}

console.log(obj)

//內(nèi)置構(gòu)造函數(shù)? 通過(guò)new 創(chuàng)建

var obj = new Object()

console.log(obj)

操作對(duì)象

就是對(duì)對(duì)象空間內(nèi)部的數(shù)據(jù)進(jìn)行增刪改查

? ? ? ? ? 增: 向?qū)ο罂臻g里面存儲(chǔ)一個(gè)數(shù)據(jù)

? ? ? ? ? ? 語(yǔ)法: 對(duì)象名.你自己起的名字 = 你要存儲(chǔ)的值

? ? ? ? ? 刪: 刪除對(duì)象空間里面的某一個(gè)數(shù)據(jù)

? ? ? ? ? ? 語(yǔ)法: delete 對(duì)象名.你要?jiǎng)h除的數(shù)據(jù)的名字

? ? ? ? ? 改: 修改對(duì)象空間里面的某一個(gè)數(shù)據(jù)

? ? ? ? ? ? 語(yǔ)法: 對(duì)象名.你要修改的名字 = 你要修改的值

? ? ? ? ? 查: 獲取對(duì)象空間里面某一個(gè)數(shù)據(jù)

? ? ? ? ? ? 語(yǔ)法: 對(duì)象名.你要查詢的數(shù)據(jù)的名字

? ? ? ? ? ? 找不到的時(shí)候, 就是 undefined

例:

var tun={

? ? ? ? name:"豚豚",

? ? ? ? age:"24",

? ? ? ? sex:"女",

? ? ? ? work:"yes",

? ? ? ? bf:{

? ? ? ? ? ? name:"老秦",

? ? ? ? ? ? age:23,

? ? ? ? ? ? dag:"奶球,八寶"

? ? ? ? }

}

//增

tun.money=200000;

//刪

delete tun.work;

//改

tun.money=10000;

//查

console.log(tun.bf);

//打印 tun?

console.log(tun);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宛渐,一起剝皮案震驚了整個(gè)濱河市竞漾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窥翩,老刑警劉巖业岁,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鳍烁,居然都是意外死亡叨襟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門幔荒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人梳玫,你說(shuō)我怎么就攤上這事爹梁。” “怎么了提澎?”我有些...
    開(kāi)封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵姚垃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我盼忌,道長(zhǎng)积糯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任谦纱,我火速辦了婚禮看成,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘跨嘉。我一直安慰自己川慌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著梦重,像睡著了一般兑燥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琴拧,一...
    開(kāi)封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天降瞳,我揣著相機(jī)與錄音,去河邊找鬼蚓胸。 笑死挣饥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赢织。 我是一名探鬼主播亮靴,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼于置!你這毒婦竟也來(lái)了茧吊?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤八毯,失蹤者是張志新(化名)和其女友劉穎搓侄,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體话速,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讶踪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泊交。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乳讥。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖廓俭,靈堂內(nèi)的尸體忽然破棺而出云石,到底是詐尸還是另有隱情,我是刑警寧澤研乒,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布汹忠,位于F島的核電站,受9級(jí)特大地震影響雹熬,放射性物質(zhì)發(fā)生泄漏宽菜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一竿报、第九天 我趴在偏房一處隱蔽的房頂上張望铅乡。 院中可真熱鬧,春花似錦仰楚、人聲如沸隆判。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侨嘀。三九已至臭挽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咬腕,已是汗流浹背欢峰。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涨共,地道東北人纽帖。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像举反,于是被迫代替她去往敵國(guó)和親懊直。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354