1. 程式人生 > >儘量避免使用For..In語法

儘量避免使用For..In語法

群裡無意引發的一個問題,:天天:給出了一個For...In語法的瀏覽器實現差異。

    //:Lamo-?:無意出的一題,本意是障眼法,但是你在不同的瀏覽器執行,結果卻不同
    var str = '',arr = [];
    arr[1]  = 'b';
    arr[0]  = 'a';
    arr[2]  = 'c';
    for(var k in arr){
        str += arr[k];
    }
    alert(str); 

IE下是bac, Opera偶執行是abc。

:天天:說for in的順序是不可靠的,ECMAScript“明確”的說明了,可以不相同,不同瀏覽器可以有不同的實現。。。囧,看樣子確實是這樣,感嘆js太過於靈活,但是這樣明顯無好處,而為了寫相容的程式碼,還需儘量避免使用For...In語法。

此記,以備後忘。

相關推薦

儘量避免使用For..In語法

群裡無意引發的一個問題,:天天:給出了一個For...In語法的瀏覽器實現差異。 //:Lamo-?:無意出的一題,本意是障眼法,但是你在不同的瀏覽器執行,結果卻不同 var str = '',arr = []; arr[1] = 'b';

IE不支援使用for in語法

在專案發現遍歷checkbox獲取選中值時出現IE不支援for in語法問題: var checkList = []; var checkName = document.getElementsByName("IsC

Delphi中For In 語法應用例項

一、遍歷 TStrings var   List: TStrings;   s: string; begin   List := TStringList.Create;   List.CommaText := 'aaa,bbb,ccc';   for s in List do     ShowMessage(

javascript語法 --- for of/for in迴圈與Map物件

迴圈陣列 var arr = [a,b,c,d] for (var i in arr){ console.log(i) //0 1 2 3 } for (var i of arr){ console.log(i) //a b c d }   迴圈jso

Python(五)語法(if,elif,else 條件判斷 for in,while 迴圈)

判斷 計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷。 如下例子 # -*- coding: utf-8 -*- age =input('請輸入年齡:') if age==18: print('年齡',age) elif age>18: print('超齡') el

js--語法--forfor-in;訪問物件的屬性.和[]的區別

1.for js中for迴圈一般用於遍歷陣列 //前提:cars是個陣列 for (var i=0;i<cars.length;i++){ document.write(cars[i] + "<br>"); } 2.fo

for-in

們的 下標 func 可能 image arr http 是否 不能 先看一個例子: Array.prototype.searchItem = function(value){//函數已被簡化 return right; } var

forfor in和while以及do while

bsp 循環條件 函數 次循環 run 遍歷 tin 技術分享 html for循環:一般用在已知判斷條件的循環; for(變量初始化;循環條件判斷;循環後的執行){ 代碼塊 } //變量初始化可以省略,但是分號不能省。有多個的話用逗號隔開 //循環條件判斷是t

嵌套 JSON 對象中的數組使用 for-in 來循環訪問每個數組

obj blog 網站 for 內嵌 info 菜鳥 dem site <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鳥教程(runoo

可枚舉屬性和不可枚舉屬性(for...in循環和Objec.keys()和Object.getOwnPropertyNames())

bject 區別 names 所有 每一個 原型 () get for for...in循環是 遍歷對象的每一個可枚舉屬性,包括原型鏈上面的可枚舉屬性,而Object.keys()只是遍歷自身的可枚舉屬性,不可以遍歷原型鏈上的可枚舉屬性. 這是for...in和Objec

python的for...in...if...語句

給定 pan 新的 list logs pre ... 說明 cnblogs Python中,for...[if]...語句一種簡潔的構建List的方法,從for給定的List中選擇出滿足if條件的元素組成新的List,其中if是可以省略的。下面舉幾個簡單的例子進行說明。

JavaScript-//FOR/IN循環。當使用for/in循環遍歷關聯數組時,就可以清晰地體會到for/in的強大之處。

get console turn 股票 toc asc ava cti val <script> //FOR/IN循環。當使用for/in循環遍歷關聯數組時,就可以清晰地體會到for/in的強大之處。 function getvalue(portfol

關於JSON類的兩個用途與for..infor循環的區別

進行 length 區別 prop per str 字符 number stringify JSON 這個類的兩個用途: 1)將Object 對象,轉換成string 類型 var obj = {"a":"1","b":"2","c":"json"}; var

for-infor-of,forEach和Map

循環對象 共同點 school 遍歷 fine 不能 name pre 包括 for-in和for-of   1.  for-in循環實際是為循環”enumerable“對象而設計的,是用來循環帶有字符串key的對象的。    使用for in會遍歷數組所有的可枚舉屬性,包

for-in循環

屬性 可能 循環 小數 for-in循環 對待 不用 -i 數字 //for in循環遍歷var objs={"username":"hh","age":"20","sex":"boy"}for(i in objs){ console.log(i); //ues

ES6: for...of VS for...in

highlight 範圍 ons dom erro 原型 設計 tor 數字 for...of和for...in是js中常用的兩個遍歷的方法,但是它們遍歷是有區別的,最主要的區別就是: (1)for...of是遍歷key, value中的value即鍵值,for...of一

JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的區別

定義 typeerror 轉換 異常 error: pan 不同 html gree   ECMAScript將對象的屬性分為兩種:數據屬性和訪問器屬性。每一種屬性內部都有一些特性,這裏我們只關註對象屬性的[[Enumerable]]特征,它表示是否通過 for-in 循環

js數組遍歷 千萬不要使用for...in...

prototype -h fun prot 數組 set splice mar init 昨天做個下拉框 擴充了一下數組的方法 Array.prototype.remove = function (val) { var index = this.indexOf(val

叠代器(Iterable)和for..in..的三種協議

all 規則 sleep mos next cnblogs 數列 elf recent 一。叠代器協議 1. 叠代器協議:對象需要提供next方法,它要麽返回叠代中的下一項,要麽就引起一個StopIteration異常,以終止叠代 2. 可跌達對象:實現了叠代器協

for in循環介紹以及陷阱

bsp log 陷阱 don dmi length 個數 是不是 tin 大家都知道在JavaScript中提供了兩種方式叠代對象: (1)for 循環; (2)for..in循環; 使用for循環進行叠代數組對象,想必大家都已經司空見慣了。但是,使用for.. in循環時