国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS基礎(chǔ)知識(shí)學(xué)習(xí)(一)

xinhaip / 456人閱讀

摘要:基礎(chǔ)知識(shí)前端開發(fā)常用的瀏覽器谷歌瀏覽器內(nèi)核引擎火狐瀏覽器內(nèi)核歐朋瀏覽器內(nèi)核瀏覽器內(nèi)核瀏覽器內(nèi)核作為前端開發(fā),我們會(huì)使用編寫代碼,編寫代碼的時(shí)候要遵循一些規(guī)范瀏覽器開發(fā)商開發(fā)的瀏覽器,目的就是為了按照的規(guī)范,識(shí)別出開發(fā)者編寫的代碼,并且在頁面

JS基礎(chǔ)知識(shí) 前端開發(fā)常用的瀏覽器

谷歌瀏覽器(chrome):Webkit內(nèi)核(v8引擎)

火狐瀏覽器(firefox):Gecko內(nèi)核

歐朋瀏覽器(opera):Presto內(nèi)核

IE瀏覽器:Trident內(nèi)核

瀏覽器內(nèi)核

作為前端開發(fā),我們會(huì)使用HTML/CSS/JS編寫代碼,編寫代碼的時(shí)候要遵循一些規(guī)范(W3C)

瀏覽器開發(fā)商開發(fā)的瀏覽器,目的就是為了按照W3C的規(guī)范,識(shí)別出開發(fā)者編寫的代碼,并且在頁面中繪制出開發(fā)者預(yù)想的頁面和效果(GPU:顯卡),我們把瀏覽器中識(shí)別代碼繪制頁面的東西稱為瀏覽器的內(nèi)核和渲染引擎。

JS的引入方式:

行內(nèi)式

嵌入式

外鏈?zhǔn)?/p>

JS中常用的輸出方式
js中提供的瀏覽器彈框

1、alert:在瀏覽器中彈出一個(gè)提示框(提供確定按鈕,點(diǎn)擊確定彈框消失);使用alert彈框提示信息,提示的內(nèi)容最后都會(huì)被轉(zhuǎn)換為字符串輸出(調(diào)用了toString這個(gè)方法)

alert({name:"candy"});//=>"[object object]"
alert([12,13]);//=>"12,13"
alert(1+1);//=>"2"

2、confirm:在alert基礎(chǔ)上增加了讓用戶選擇性的操作,(提供兩個(gè)按鈕:確定和取消)。當(dāng)用戶點(diǎn)擊的是確定按鈕的時(shí)候我們接收的是true,當(dāng)用戶點(diǎn)擊的是取消按鈕的時(shí)候我們接收的是false,此后我們可以根據(jù)接收的結(jié)果做不同的處理即可

3、prompt:在confirm上的基礎(chǔ)上增加了讓用戶輸入的效果;用戶點(diǎn)擊取消按鈕我們獲取到的結(jié)果是null;如果用戶點(diǎn)擊的是確定按鈕,我們將會(huì)獲取到用戶輸入的內(nèi)容(如果用戶沒有輸入任何內(nèi)容我們獲取的結(jié)果是空字符串)

:真實(shí)項(xiàng)目中,尤其是需要樣式精美的網(wǎng)站中,我們的提示框一般都是自己封裝插件和組件來實(shí)現(xiàn),不會(huì)用內(nèi)置的(使用原生JS封裝模態(tài)框組件)

控制臺(tái)輸出

方便開發(fā)員進(jìn)行調(diào)試的;F12(FN+12)打開瀏覽器的控制臺(tái)

console.log :在控制臺(tái)輸出,優(yōu)勢(shì)不會(huì)轉(zhuǎn)換數(shù)據(jù)類型,輸出什么格式的數(shù)據(jù)都可以

console.dir:比LOG輸出的更加詳細(xì)一些

console,table:把JSON數(shù)據(jù)展示稱為一個(gè)表格

...

JavaScript
ECMAScript(ES):規(guī)定了js的一些基礎(chǔ)核心的知識(shí)(變量、數(shù)據(jù)類型、語法規(guī)范、操作語句等)

DOM:document object model 文檔對(duì)象模型,里面提供了一些屬性和方法,可以讓我們操作頁面中的元素

BOM:browser object model 瀏覽器對(duì)象模型,里面提供了一些屬性和方法,可以讓我們操作瀏覽器

變量和常量
變量:值是可以變的

常量:值是不可變得

//=>JS中定義變量的方式
//var 變量名 = 值;(ES6中定義變量使用let)
var num=12;
var str="candy";

//=>JAVA等后臺(tái)語言定義變量比較嚴(yán)謹(jǐn),JS比較松散
//int num=12;
//float num=12.5;
//double num=3.1415926;

console.log(num);//=>12 變量其實(shí)只是一個(gè)無意義的名字 它所代表的意義都是其存儲(chǔ)的那個(gè)值

num=13;//=>讓原有的num變量存儲(chǔ)的值修改為13(變量只能代表一個(gè)值)
//=>任何一個(gè)具體的數(shù)據(jù)值都是常量,例如12就是一個(gè)常量

//=>和變量類似,我們?cè)O(shè)置一個(gè)常量(也是一個(gè)名字),給其存儲(chǔ)一個(gè)值,但是這個(gè)存儲(chǔ)的值不能修改
const num=12;//=>定義一個(gè)常量num,給他存儲(chǔ)了12(const是ES6新增的)
num=13;//=>Uncaught TypeError: Assignment to constant variable.常量存儲(chǔ)的值是不能修改的。
JS中的命名規(guī)范

1、JS中嚴(yán)格區(qū)分大小寫

var text="candy";
var Text="daisy";
console.log(text);//=>"candy" text和Text是兩個(gè)變量

2、遵循國(guó)際命名規(guī)則 駝峰命名法

第一個(gè)單詞首字母小寫,其余每一個(gè)有意的單詞首字母大寫
var studentInfo;

//命名使用英文單詞,不要使用拼音
//不是所有單詞都能簡(jiǎn)寫,我們需要保證大家看到名字后知道所代表的意思

/***

info:information 信息
init:initialization 初始化
add/insert/creat:增加創(chuàng)建插入
remove/rm/clear/del/delete:刪除
update:修改
get/query/select:查詢獲取

***/

3、命名的時(shí)候可以使用$、_ 、數(shù)字 、字母,但是數(shù)組不能作為名字的第一位

var student_info;
var $xxx;//=>一般都是應(yīng)用JQ獲取到的值
var _xxx;//=>一般這樣的情況代表變量是一個(gè)全局或者公用的變量

4、JS中很多的詞都是有特殊含義的,我們管這些詞叫做關(guān)鍵字;現(xiàn)在沒有特殊含義,以后可能會(huì)作為關(guān)鍵詞的,我們叫做保留字;而關(guān)鍵字和保留字都不可以隨便用來命名

JS中的數(shù)據(jù)類型

基本數(shù)據(jù)類型(值類型)

number:數(shù)字

string:字符串

boolean:布爾

null:空對(duì)象指針

undefined:未定義

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

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

{}普通對(duì)象

[]數(shù)組

/^$/正則

...

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

12 12.5 -12.5 0
"candy" "daisy"=>單雙引號(hào)包裹起來的都是字符串(單雙引號(hào)沒有區(qū)別)
true false=>布爾類型:只有兩個(gè)值
null 
undefined

{name:"candy",age"28"}
[12,23,34]
/^-?(d|([1-9]d+))(.d+)?$/
function fn(){}              

這么多數(shù)據(jù)類型JS如何的去檢測(cè)呢?

typeof :檢測(cè)數(shù)據(jù)類型的運(yùn)算符

instanceof :檢測(cè)某個(gè)實(shí)例的構(gòu)造器

constructor:獲取當(dāng)前實(shí)例的構(gòu)造器

Object.prototype.toString.call:獲取當(dāng)前實(shí)例的所有類信息

typeof

使用typeof檢測(cè)返回的是一個(gè)字符串,字符串中包含的內(nèi)容證明了值是屬于什么類型的

[局限性]

1、typeof null不是“null”而是object:因?yàn)閚ull雖讓是多帶帶的一個(gè)數(shù)據(jù)類型,但是它原本的意思是空對(duì)象指針,瀏覽器使用typeof檢測(cè)的時(shí)候會(huì)把他按照對(duì)象來檢測(cè)

2、使用typeof 無法具體細(xì)分出到底是數(shù)組還是正則,因?yàn)榉祷氐慕Y(jié)果都是”object“

typeof 12;//=>"number"
var num=13;
typeof num;//=>"number"

騰訊的面試題:

console.log(typeof typeof []);//=>"string"
布爾

Boolean

把其它數(shù)據(jù)類型的值轉(zhuǎn)換為布爾值

只有0、NaN、空字符串、null、undefind這五個(gè)數(shù)據(jù)轉(zhuǎn)換為布爾類型的false,其余都會(huì)變?yōu)閠rue

!

!=:不等于

嘆號(hào)在js中還有一個(gè)作用:取反,先把值轉(zhuǎn)換為布爾類型,然后在去取反

!!

在一個(gè)嘆號(hào)取反的基礎(chǔ)上在取反,取兩次反相當(dāng)于沒有做操作,但是卻已經(jīng)把其他類型值轉(zhuǎn)換為布爾類型了,和Boolean是相同的效果
字符串
在JS中單引號(hào)和雙引號(hào)包起來的都是字符串
12->number
"12"->string
"[12,13]"->string

常用方法:

charAt charCodeAt

substr substring slice

toUpperCase toLowerCase

indexOf lastIndexof

split

replace

match

...

number數(shù)字
JS中多增加了一個(gè)number類型的數(shù)據(jù)NaN

typeof NaN ->"number"

NaN

not a number:不是一個(gè)數(shù),但是屬于number類型

NaN==NaN:false,NaN和任何其它值都不相等

isNaN()

用來檢測(cè)當(dāng)前這個(gè)值是否是非有效數(shù)字,如果不是有效數(shù)字檢測(cè)的結(jié)果是true,反之是有效數(shù)字則為false
isNaN(0);//->false
isNaN(NaN);//->true
isNaN("12");//->false 當(dāng)我們使用isNaN檢測(cè)值的時(shí)候,檢測(cè)的值不是number類型的,瀏覽器會(huì)默認(rèn)的把值先轉(zhuǎn)換為number類型,然后再去檢測(cè)

isNaN([]);//false 先運(yùn)行Number()方法把[]轉(zhuǎn)換成0 然后在判斷isNaN,零為有效數(shù)字,所以是false

Number()

把其它數(shù)據(jù)類型值轉(zhuǎn)化為number類型的值
Number("12");//=>12
Number("12px");//=>NaN 在使用Number轉(zhuǎn)換的時(shí)候只要字符串中出現(xiàn)任何一個(gè)非有效數(shù)字字符,最后的結(jié)果都是NaN
Number(true);//=>1
Number(false);//=>0

Number(null);//=>0
Number(undefined);//=>NaN

Number([]);//=>0 把引用數(shù)據(jù)類型轉(zhuǎn)換為number,首先需要把引用數(shù)據(jù)類型轉(zhuǎn)為字符串(toString),再把number即可 例如[]=>"" ""=>0
Number([12]);//=>[12]=>"12" "12"=>12
Number([12,13]);//=>[12,13]=>"12,23"=>NaN
Number({name:"candy"})//=>NaN
Number({});//=>NaN

parseInt

也是把其他數(shù)據(jù)類型值轉(zhuǎn)換為number,和Number方法在處理字符串的時(shí)候有所區(qū)別
Number("12px");//=>NaN
parseInt("12px");//=>12
parseInt("12px13");//=>12 提取規(guī)則:從左到右一次查找有效數(shù)字字符,直到遇見非有效數(shù)字字符為止(不管后面是否還有,都不找了),把找到的轉(zhuǎn)換為數(shù)字
parseInt("px12");//=>NaN

parseFloat

在parseInt的基礎(chǔ)上可以識(shí)別小數(shù)點(diǎn)
parseInt("12.5px")->12
parseFloat("12.5px")->12.5

擴(kuò)展思考:parseInt常用的只需要傳遞一個(gè)值做參數(shù)即可,但是它支持多個(gè)參數(shù),回去后擴(kuò)展其它參數(shù)的意思

parseInt(string,radix)
null和undefined
null:空,沒有

undefined :未定義

”“:空字符串沒有

0:也可以理解為沒有

空字符串和null的區(qū)別

比喻:都是去種樹

空字符串屬于挖了個(gè)坑,但是沒有任何東西

null是連坑都沒挖

空字符串相對(duì)null來說開辟了內(nèi)存

null和undefined的區(qū)別

null一般都是暫時(shí)沒有,預(yù)期中以后會(huì)有的(可能以后也沒有達(dá)到預(yù)期):在Js中null一般都是手動(dòng)先賦值為null,后期我們?cè)诮o其賦具體值

undefined:完全沒有預(yù)料之內(nèi)的

對(duì)象數(shù)據(jù)類型object
var obj={name:"candy",age:"28"}

每一個(gè)對(duì)象都是由零到多組屬性名:屬性值(value值)組成的,或者說由多組鍵值對(duì)組成的,每組鍵值對(duì)中間用逗號(hào)分隔

屬性:描述這個(gè)對(duì)象特點(diǎn)特征的

對(duì)象的屬性名是字符串或者數(shù)字格式的,存儲(chǔ)的屬性值可以是任何的數(shù)據(jù)類型

對(duì)象名.屬性名:忽略了屬性名的單雙引號(hào)

對(duì)象名[屬性名]:不能忽略單雙引號(hào)

var obj={name:"candy",age:"28",otherName:["daisy","lily"]};
//=>獲取某個(gè)屬性名對(duì)應(yīng)的屬性值
obj.name
obj.["name"]
//->如果屬性名是數(shù)字如何操作
obj.0 //語法不支持
//obj[0]/ obj["0"] //兩種都可以支持
//如果操作的屬性名在對(duì)象中不存在,獲取的結(jié)果是undefined
obj.sex//->undefined

//=>設(shè)置/修改:一個(gè)對(duì)象的屬性名是不能重復(fù)的(唯一性),如果之前存在就是修改屬性操作值的操作,反之不存在就是新設(shè)置屬性的操作
obj.sex="男";
obj["age"]=9;

//=> 刪除
//=>假刪除:讓其屬性值賦值為null,但是屬性還在對(duì)象中
obj.sex=null;
//=>真刪除:把整個(gè)屬性都在對(duì)象中暴力移除
delete obj.sex;

思考題:obj[age]和obj["age"]有什么樣的區(qū)別?

var obj={name:"candy",age:28};
var age="name";
obj[age];//=>obj[age變量]=>obj["name"]=>獲取name屬性名的屬性值=>candy
obj["age"];//=>28
//age:變量名,代表的是它存儲(chǔ)的值
//"age":常量,字符串的具體值。
//obg[age]操作的是對(duì)象中的屬性,并不是操作的變量,所以是操作變量所存儲(chǔ)的值,也就相當(dāng)于obj["name"],而obj["age"]就是操作的obj對(duì)象中的age屬性,所以值就是age本身。
基本數(shù)據(jù)類型和引用數(shù)據(jù)類型的區(qū)別
js是運(yùn)行在瀏覽器中的(內(nèi)核引擎),瀏覽器會(huì)為js提供賴以生存的環(huán)境(提供給js代碼執(zhí)行的環(huán)境)=>全局作用域window(global)
var a=12;
var b=a;//=>把a(bǔ)變量存儲(chǔ)的值賦值給b
b=13;
console.log(a);

var n={name:"candy"};
var m=n;
m.name="daisy";
console.log(n.name);

基本數(shù)據(jù)類型是按值操作的:基本數(shù)據(jù)類型在賦值的時(shí)候,是直接把值賦值給變量即可;

引用數(shù)據(jù)類型是按照空間地址(引用地址)來操作的

var n={name:"candy"}

1、先創(chuàng)建一個(gè)變量n

2、瀏覽器首先會(huì)開辟一個(gè)新的存儲(chǔ)空間(內(nèi)存空間),目的是把對(duì)象中需要存儲(chǔ)的內(nèi)容(鍵值對(duì))分別的存儲(chǔ)在這個(gè)空間中,為了方便后期找到這個(gè)空間,瀏覽器給空間設(shè)定了一個(gè)地址(16進(jìn)制的)

3、把空間的地址賦值給了變量

函數(shù)數(shù)據(jù)類型
函數(shù)數(shù)據(jù)類型也是按照引用地址來操作的

函數(shù):具備一定功能的方法

//=>創(chuàng)建函數(shù):相當(dāng)于生產(chǎn)了一臺(tái)洗衣機(jī)
function  函數(shù)名(){
    //=>函數(shù)體:實(shí)現(xiàn)某一個(gè)功能的具體js代碼
}
//=>執(zhí)行函數(shù):相當(dāng)于使用洗衣機(jī)洗衣服(如果函數(shù)值創(chuàng)建了但是沒有執(zhí)行,函數(shù)沒有任何意義)
函數(shù)名();
function fn(){
    console.log(1+1);
}
fn;//=>輸出函數(shù)本身
fn();//2 =>把函數(shù)執(zhí)行(把函數(shù)體中實(shí)現(xiàn)功能的代碼執(zhí)行)

//=>形參:形式參數(shù)(變量),函數(shù)的入口
//當(dāng)我們創(chuàng)建一個(gè)函數(shù)想要實(shí)現(xiàn)某個(gè)功能的時(shí)候,發(fā)現(xiàn)有一些材料并不清楚,只有當(dāng)函數(shù)運(yùn)行的時(shí)候,別人傳遞給我,我才知道,此時(shí)我們就需要設(shè)定入口,讓用戶執(zhí)行的時(shí)候通過入口把值給我們。
function fn(a,b){
    console.log(a+b);
}
//=>實(shí)參:函數(shù)執(zhí)行傳遞給函數(shù)的具體值就是實(shí)參
fn(3,2);
fn(4,3);
判斷操作語句

if、else if、else

if(條件1){
    //=>條件1成立執(zhí)行的操作
}else if(條件2){
    //=>上面條件不成立,條件2成立,執(zhí)行的操作
}
...
else{
    //=>以上條件都不成立執(zhí)行的操作
}
//如果好幾個(gè)條件都成立了,只把第一個(gè)成立的條件執(zhí)行,后天成立的條件忽略不管
/***
條件:A==B、A!=B、A>=B、A先把A轉(zhuǎn)換為布爾類型,判斷真假以此來判定條件是否成立
if(A>B && AB || A

BAT面試題:

var num=parseFloat("width:12.5px");//NaN
if(num==12.5){
    alert(12.5);
}else if(num==NaN){//NaN!=NaN
    alert(NaN);
}else if(typeof num=="number"){//=>typeof NaN->"number"
    alert(0);//=>"0";
}else{
    alert("啥也不是");
}

三元運(yùn)算符

條件?條件成立執(zhí)行:條件不成立執(zhí)行

if(條件){}else{}:三元運(yùn)算符就是這種簡(jiǎn)單if、else的另外一種寫法

if(num>5 && num<=10){
    num++; //num+=1 num=num+1 自身累加1
}else{
    num--;
}
//=>改寫成三元運(yùn)算符
num>5 && num<=10?num++:num--;
var num=10;
if(num>5 && num<=10){
    num++; //num+=1 num=num+1 自身累加1
}
//=>改寫成三元運(yùn)算符:如果條件成立或者不成立的某一種情況并不需要做什么處理,我們空著語法不符合,我們使用null、undefined、void 0(就是undefined)占位即可
num>5 && num<=10?num++:null;
var num=10;
if(num>5 && num<=10){
    num++; //num+=1 num=num+1 自身累加1
    console.log(num);
}
//=>改寫成三元運(yùn)算符:某一種情況執(zhí)行多條操作,使用小括號(hào)包起來,中間用逗號(hào)分隔
num>5 && num<=10?(num++,console.log(num)):null;
var num=10;
if(num>5 && num<=10){
    num++; 
    break;//continue;/return;
}
//=>改寫成三元運(yùn)算符:在三元運(yùn)算符的操作中不能出現(xiàn)break,continue,return 這些關(guān)鍵詞,我們無法用三元運(yùn)算符代替if、else
num>5 && num<=10?(num++,return):null;
//=>Uncaught SyntaxError :語法錯(cuò)誤
var num=0;
num>0?(num<10?num++:num--):(num>-10?num+=2:num-=2);

//=>改寫成if else
if(num>0){
    if(num<10){
        num++;
    }else{
        num--;
    }
}else{
    if(num>-10){
        num+=2;
    }else{
        num-=2;
    }
}
switch case
switch case 引用于if、else中一個(gè)變量在不同值情況下的不同操作
var num=10;
switch(num){//=>switch后面小括號(hào)中存放的是一個(gè)值(一般我們都寫變量:把變量存儲(chǔ)的值拿來用,有時(shí)候也可能是一個(gè)計(jì)算)
    case 1:
        ...
        break;
    case 10://=>case后面放入的都是值,目的是驗(yàn)證switch后面的值和哪一種case后面的值相等,相等的進(jìn)行對(duì)應(yīng)的處理
        ...
        break;//=>每一種case結(jié)束后都要加break,結(jié)束當(dāng)前的判斷
    default://=>switch后面的值和每一種case情況對(duì)應(yīng)的值都不相等,執(zhí)行最后的default,類似于else
        ...

案例分析

var num=5;
switch(num%2){//=>想把取余操作進(jìn)行運(yùn)算,那運(yùn)算結(jié)果和case比較
    case 1:
        num++;
        break;
    case 2-1://=>case后面也應(yīng)該是值,此處先把2-1計(jì)算,把計(jì)算的結(jié)果和switch值比較
        num--;
        //=>最后一項(xiàng)可以不加break,不加也能跳出判斷
}
//num%2:讓num存儲(chǔ)的值除以2取余數(shù)(0或者1)
var num=5;
switch(num%3){
    case 0:
        num++;//=>不加break,不管后面的條件是否成立,都會(huì)繼續(xù)向下執(zhí)行,直到遇到break為止
    case 1:
        num--;
        break;
    default:
        num=0;
}
//=>小應(yīng)用:把符合某幾項(xiàng)值都去做同一件事情,使用不加break來實(shí)現(xiàn)
switch(num%3){
    case 0:
    case 1://=>余數(shù)是0或1都執(zhí)行減減的操作
        num--;
        break;
    default:
        num=0;
}
var num="6";
switch(num){
    case 0:
        num++;
        break;
    case 6:
        num--;
        break;
    default:
        num=0;
}
//=>num=0;
//switch case 中的比較使用的是:===(全等)
/***
=:賦值,等號(hào)左邊是變量,右邊是值
==:比較,如果左右兩邊值的類型不一樣,瀏覽器會(huì)默認(rèn)轉(zhuǎn)換為一樣的然后在進(jìn)行比較
===:絕對(duì)相等,不僅要求值一樣,并且類型也完全一樣
***/
循環(huán)操作語句
循環(huán):重復(fù)做一件事情

for循環(huán)

for(設(shè)置循環(huán)起始值;設(shè)置循環(huán)執(zhí)行的條件;步長(zhǎng)累加){
    //=>循環(huán)體:重復(fù)做的事情都在循環(huán)體中
}

案例剖析

//1、設(shè)置初始值
//2、驗(yàn)證條件
//3、條件成立,執(zhí)行循環(huán)體;不成立,循環(huán)結(jié)束
//4、步長(zhǎng)累加
for(var i=0;i<5;i++){
    console.log(i);//=>1 2 3 4
}
console.log(i);//5
var i=0;
for(;i<5;){
    console.log(i);
}
console.log(i);//=>=>沒有步長(zhǎng)累加,我們的i永遠(yuǎn)是0,循環(huán)條件永遠(yuǎn)成立"死循環(huán)":項(xiàng)目中不能出現(xiàn)死循環(huán),一旦出現(xiàn),循環(huán)下面的事情都做不了
var i=0;
for(;i<5;i+=2){
    console.log(i);//0 2 4
}
console.log(i)//6
for(var i=0;i<5;i+=2){
    console.log(i);
    continue;//=>結(jié)束本輪循環(huán),繼續(xù)執(zhí)行下一輪:循環(huán)體中continue后面的代碼都不會(huì)再執(zhí)行,他會(huì)直接的去執(zhí)行步長(zhǎng),然后進(jìn)入到下一輪
    ...
}
console.log(i)//6
for(var i=0;i<5;i+=2){
    console.log(i);
    break;//=>結(jié)束整個(gè)循環(huán):循環(huán)體中一旦遇到break,首先后面的代碼不執(zhí)行了,而且步長(zhǎng)累加也不執(zhí)行了,循環(huán)都結(jié)束了
    ...
}
console.log(i)//=>0

BAT面試題:

for(var i=1;i<10;i+=2){
    if(i<5){
        i++;//2 5
        continue;
    }else{
        i+=3;//9
        break;
    }
    console.log(i);
}
console.log(i);//10
//輸出1次 值為10

for in循環(huán)

//=>for in:用來遍歷(循環(huán))對(duì)象鍵值對(duì)的
var obj={name:"candy",age:"28",1:"daisy",2:"lily",3:"candice",2.5:"呵呵"};
//=>var key; var attr(attribute);
//=>默認(rèn)情況下對(duì)象中有多少組鍵值對(duì),我們的FOR IN循環(huán)就遍歷多少次(不一定)
//=>每一次循環(huán)KEY這個(gè)變量存儲(chǔ)的都是當(dāng)前循環(huán)這組鍵值對(duì)的屬性名
//1、KEY存儲(chǔ)的值都是字符串格式的(不管屬性名是否為數(shù)字)
//2、在FOR IN循環(huán)遍歷的時(shí)候,大部分瀏覽器都是先把對(duì)象中的鍵值對(duì)進(jìn)行排序(把數(shù)字屬性名的排在前面,并且排列的時(shí)候按照數(shù)字由小到大排了),其次在把非數(shù)字的屬性名按照之前編寫的順序排列,循環(huán)的時(shí)候按照重新排列的順序依次遍歷(小數(shù)算作字母不算做數(shù)字)
for(var key in obj){
    console.log(typeof key);//=>"string"
    //key->屬性名 "name"/"age"...
    console.log(obj.key);//->undefined 獲取obj中key這個(gè)屬性對(duì)應(yīng)的屬性值 <=>obj["key"]
    console.log(obj[key]);//=>每一次循環(huán)吧key變量存儲(chǔ)的值(當(dāng)前遍歷的屬性名)獲取到放在中括號(hào)中,獲取obj中對(duì)應(yīng)屬性的屬性值
}

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/95687.html

相關(guān)文章

  • 堅(jiān)持:學(xué)習(xí)Java后臺(tái)的第階段,我學(xué)習(xí)了那些知識(shí)

    摘要:最近的計(jì)劃是業(yè)余時(shí)間學(xué)習(xí)后臺(tái)方面的知識(shí),發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺很遙遠(yuǎn)。為了快速進(jìn)入后臺(tái)的開發(fā),我也要加快腳步了 showImg(https://segmentfault.com/img/remote/1460000016070790?w=899&h=499); 最近的計(jì)劃是業(yè)余時(shí)間學(xué)習(xí)Java后臺(tái)方面的知識(shí),發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺...

    instein 評(píng)論0 收藏0
  • 堅(jiān)持:學(xué)習(xí)Java后臺(tái)的第階段,我學(xué)習(xí)了那些知識(shí)

    摘要:最近的計(jì)劃是業(yè)余時(shí)間學(xué)習(xí)后臺(tái)方面的知識(shí),發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺很遙遠(yuǎn)。為了快速進(jìn)入后臺(tái)的開發(fā),我也要加快腳步了 showImg(https://segmentfault.com/img/remote/1460000016070790?w=899&h=499); 最近的計(jì)劃是業(yè)余時(shí)間學(xué)習(xí)Java后臺(tái)方面的知識(shí),發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺...

    khs1994 評(píng)論0 收藏0
  • 堅(jiān)持:學(xué)習(xí)Java后臺(tái)的第階段,我學(xué)習(xí)了那些知識(shí)

    摘要:最近的計(jì)劃是業(yè)余時(shí)間學(xué)習(xí)后臺(tái)方面的知識(shí),發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺很遙遠(yuǎn)。為了快速進(jìn)入后臺(tái)的開發(fā),我也要加快腳步了 showImg(https://segmentfault.com/img/remote/1460000016070790?w=899&h=499); 最近的計(jì)劃是業(yè)余時(shí)間學(xué)習(xí)Java后臺(tái)方面的知識(shí),發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺...

    April 評(píng)論0 收藏0
  • 堅(jiān)持:學(xué)習(xí)Java后臺(tái)的第階段,我學(xué)習(xí)了那些知識(shí)

    摘要:最近的計(jì)劃是業(yè)余時(shí)間學(xué)習(xí)后臺(tái)方面的知識(shí),發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺很遙遠(yuǎn)。為了快速進(jìn)入后臺(tái)的開發(fā),我也要加快腳步了 showImg(https://segmentfault.com/img/remote/1460000016070790?w=899&h=499); 最近的計(jì)劃是業(yè)余時(shí)間學(xué)習(xí)Java后臺(tái)方面的知識(shí),發(fā)現(xiàn)學(xué)習(xí)的過程中,要學(xué)的東西真多啊,讓我一下子感覺...

    waltr 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<