for/in - 循环遍历对象的属性,while - 当指定的条件

作者: 前端  发布:2019-08-29

javascript中for/in循环及利用本事,javascriptfor

JavaScript 扶助分裂档案的次序的巡回:

for - 循环代码块一定的次数

for/in - 循环遍历对象的性质

while - 当钦赐的准则为 true 时循环内定的代码块

do/while - 一样当钦定的原则为 true 时循环钦点的代码块

1. in运算符:须要其左臂的运算数是叁个字符串,或能够被转移为字符串,侧面的运算数是一个对象或数组。假使该运算符左侧的值是左手对象的三个属性名,则赶回true。

例如:

   var point={x:1,y:2}; //对象直接量
   var has_x="x" in point; //返回true
   var has_z="z" in point; //返回false
   var ts="toString" in point;//返回true,toString为继承方法

   2. for/in语句:语法,

for (variable in object)
                           statement;

      提供了一种遍历对象属性的艺术。

例:

for(var prop in my_object) {
    document.write("name:" prop ";value:" my_object[prop],"<br>");
  }

      javascript的数组是一种非凡的对象,因此for/in循环能够像枚举对象属性同样枚举数组下标。

能够把叁个对象的富有属性名复制到多个数组中,

例:

var o= {x:1,y:2,z:3};
  var a=new Array();
  var i=0;
  for (a[i  ] in o) 
  ;//空语句,用于初始化数组

    3. in运算符与for/in语句差异,for/in语句in的左边手能够是宣称一个变量的var语句,数组的一个因素或然是目的的一性子质,无法使字符串。

    4. 数组常用的存取属性运算符是“[]”,而不是“.”。使用“[]”来命名属性名师字符串值,是动态的,能够在运转时更换,并非三个标志符“.”。

例:

var stock_name= get_stock_name_from_user();//从用户处获取股票名
  var share= get_number_of_shares();//得到股票数量
  portfolio[stock_name]= share;//动态地创建数组股票,并为每支股票赋值
  将该例子与for/in循环一起使用,当用户输入了他的投资组合,可以计算当前总值
  var value= 0;
  for (stock in portfolio) {
    value  =get_share_value(stock)*portfolio[stock];
  }

stock存取的是每支股票(stock)的名字。     

portfolio[stock]存取的是每支股票(stock)的数量。

for-in循环

成效:遍历对象属性,把属性名和属性值都建议来

var obj = {
 "key1":"value1",
 "key2":"value2",
 "key3":"value3"
};
function EnumaKey(){
 for(var key in obj ){
  alert(key);
 }
}
function EnumaVal(){
 for(var key in obj ){
  alert(obj[key]);
 }
}
EnumaKey(obj)
//key1 key2 key3
EnumaVal(obj)
//value1 value2 value3

数组也得以这么遍历,但不推荐,因为无法担保顺序,并且只要在Array的原型上加多了质量,那些本性也会被遍历出来。

for-in循环应该用在非数组对象的遍历上,使用for-in进行巡回也被称呼“枚举”。

从才具上将,你能够运用for-in循环数组(因为JavaScript中数组也是目的),但那是不引入的。因为借使数组对象已被自定义的功用巩固,就只怕发生逻辑错误。别的,在for-in中,属性列表的依次(连串)是无法保障的。所以最棒数组使用正规的for循环,对象使用for-in循环。

JavaScript 支持差别类其他大循环: for - 循环代码块一定的次数 for/in - 循环遍历对象的性质 while -...

效益:遍历对象属性,把属性名和属性值都建议来

var obj = {
 "key1":"value1",
 "key2":"value2",
 "key3":"value3"
};
function EnumaKey(){
 for(var key in obj ){
  alert(key);
 }
}
function EnumaVal(){
 for(var key in obj ){
  alert(obj[key]);
 }
}
EnumaKey(obj)
//key1 key2 key3
EnumaVal(obj)
//value1 value2 value3

一个 try 只好有二个 catch,捕获全体(各样)卓殊。

portfolio[stock]存取的是每支期货(Futures)的多寡。

例:

说话与表明式的区分是,表明式会生出一个值,语句不会。举例 var a = 1 1 是唇舌,左侧是表明式。

      javascript的数组是一种极其的靶子,由此for/in循环可以像枚举对象属性同样枚举数组下标。

var o= {x:1,y:2,z:3};
  var a=new Array();
  var i=0;
  for (a[i  ] in o) 
  ;//空语句,用于初始化数组

switch

switch 结构如下:

switch(value) {
case 1:
    doSome()
    break
case 2:
    doSome()
    break
default
    doSome()
}

case 比较使用 === 运算符,即严厉比较。

JavaScript 的 switch 匹配叁个 case 后,会三番五次检查评定三翻五次的 case,除非显式使用 break

一个 switch 是三个语句块,case 不形成新的语句块或成效域,因而不要 case 中应用 let 定义变量。比方

switch(value) {
case 1:
    let a = 1
    doSome()
    break
case 2:
    let a = 1 // 报错!a 已声明!
    doSome()
    break
default
    doSome()
}

从技术中将,你能够应用for-in循环数组(因为JavaScript中数组也是目的),但那是不推荐的。因为一旦数组对象已被自定义的效应加强,就恐怕发生逻辑错误。另外,在for-in中,属性列表的一一(体系)是不能够担保的。所以最佳数组使用正规的for循环,对象使用for-in循环。

能够把贰个对象的具有属性名复制到多个数组中,

新春初中一年级运算符与布尔短路

JavaScript 常利用布尔短路和动态类型的表征,编写快速代码,如:

window.onload = window.onload || funciton() {...}

var a = obj && obj.field || ""

如果 obj 存在则尝试访谈它的二个字段。不然,可能字段自个儿为空,重临空字符串。

新春初中一年级运算符即 ?:,与 JavaScript 代码中常见的急速写法 a && a.b || c 并不一定等同。比方:

var a = obj && obj.field || -1

如果 obj 存在,但 obj.field 为 0,结果将是 -1。因为 0 也是假值。但用安慕希运算符就从未有过这几个难题。

var a = obj ? obj.field : -1

数组也得以如此遍历,但不推荐,因为不可能担保顺序,并且假设在Array的原型上增加了品质,这么些个性也会被遍历出来。

      提供了一种遍历对象属性的不二等秘书籍。

解构赋值(ES6)

解构(Destructuring)能将数组或对象相称到变量。解构是百无一用容忍的:若找不到赋值 undefined

// 数组
var [a,  ,b] = [1, 2, 3]
a === 1
b === 3

// 对象
var { op: a, lhs: { op: b }, rhs: c } = getASTNode()

// 对象,缩写
var {op, lhs, rhs} = getASTNode()

// 可以用于形参处
function g({name: x}) {
    console.log(x)
}
g({name: 5})

// 错误容忍
var [a] = []
a === undefined

// 错误容忍 默认值
var [a = 1] = []
a === 1

// 错误容忍 默认参数
function r({x, y, w = 10, h = 10}) {
    return x   y   w   h;
}
r({x:1, y:2}) === 23
var obj = {
 "key1":"value1",
 "key2":"value2",
 "key3":"value3"
};
function EnumaKey(){
 for(var key in obj ){
  alert(key);
 }
}
function EnumaVal(){
 for(var key in obj ){
  alert(obj[key]);
 }
}
EnumaKey(obj)
//key1 key2 key3
EnumaVal(obj)
//value1 value2 value3

for (variable in object)
                           statement;

相等

两组运算符 ===!====!==== 唯有在几个操作数类型一样且值相同期才会回来 true。但 ==!= 在做比较时,固然操作数类型不相同,会尝试做转换,转换法则非常诡异。一些例子:

'' == '0'          // false
0 == ''            // true
0 == '0'           // true

false == 'false'   // false
false == '0'       // true

false == undefined // false
false == null      // false
null == undefined  // true

' trn ' == 0    // true

建议,始终使用 ===!==。永久不要使用 ==!=

    3. in运算符与for/in语句不相同,for/in语句in的左边能够是宣称三个变量的var语句,数组的叁个因素只怕是目的的四性情质,不能够使字符串。

    3. in运算符与for/in语句分裂,for/in语句in的左侧能够是声称一个变量的var语句,数组的一个要素可能是目的的叁特性质,不能够使字符串。

假值

下列值被作为假:

  • false
  • null
  • undefined
  • 空字符串
  • 数字 0
  • 数字 NaN

其他值都被当作真,富含 true、字符串"false"、空数组 [],空对象 {}

1. in运算符:必要其侧边的运算数是八个字符串,或能够被撤换为字符串,右侧的运算数是一个目的或数组。借使该运算符右侧的值是右臂对象的二个属性名,则赶回true。

JavaScript 帮助不相同档案的次序的循环:

赋值

赋值运算符的结合性是从右至左,也正是说,如若一个表明式中出现了三个赋值运算符,运算顺序是从右到左。由此,能够透过下边包车型客车方法来给四个变量赋值:

i=j=k=0
var o= {x:1,y:2,z:3};
  var a=new Array();
  var i=0;
  for (a[i  ] in o)
  ;//空语句,用于初始化数组

stock存取的是每支期货(Futures)的名字。     

循环

基本 for 循环:

for(initializtion; condition; increment)

for-in 枚举对象的保有属性名(或键名)。用于数组,枚举全部的 index。

一般来讲必要检查 object.hasOwnProperty(varibale) 来明确这些特性名正是该目的的分子,照旧从其原型链中获得的。

for (myvar in obj) {
    if (obj.hasownProperty(myvar)) {
        ...
    }
}

for-of 能够遍历可迭代的指标,最普遍的例证是数组。

let a = [1, 2, 3]
for(let item of a) console.log(item) // 1 2 3

for-in循环

for - 循环代码块一定的次数

操纵语句:if switch while for do break return continue throw try catch

   2. for/in语句:语法,

for(var prop in my_object) {
    document.write("name:" prop ";value:" my_object[prop],"<br>");
  }

for (variable in object)
                           statement;

例:

能够把贰个目标的富有属性名复制到三个数组中,

var stock_name= get_stock_name_from_user();//从用户处获取股票名
  var share= get_number_of_shares();//得到股票数量
  portfolio[stock_name]= share;//动态地创建数组股票,并为每支股票赋值
  将该例子与for/in循环一起使用,当用户输入了他的投资组合,可以计算当前总值
  var value= 0;
  for (stock in portfolio) {
    value  =get_share_value(stock)*portfolio[stock];
  }

  

portfolio[stock]存取的是每支股票(stock)的数额。

var stock_name= get_stock_name_from_user();//从用户处获取股票名
  var share= get_number_of_shares();//得到股票数量
  portfolio[stock_name]= share;//动态地创建数组股票,并为每支股票赋值
  将该例子与for/in循环一起使用,当用户输入了他的投资组合,可以计算当前总值
  var value= 0;
  for (stock in portfolio) {
    value  =get_share_value(stock)*portfolio[stock];
  }

    4. 数组常用的存取属性运算符是“[]”,而不是“.”。使用“[]”来命名属性名师字符串值,是动态的,能够在运作时改造,并非一个标志符“.”。

JavaScript 援救分裂品种的轮回:

   var point={x:1,y:2}; //对象直接量
   var has_x="x" in point; //返回true
   var has_z="z" in point; //返回false
   var ts="toString" in point;//返回true,toString为继承方法

for - 循环代码块一定的次数

do/while - 同样当钦定的口径为 true 时循环内定的代码块

      提供了一种遍历对象属性的格局。

您大概感兴趣的篇章:

  • JsRender for index循环索引用法详解
  • js使用for循环与innerHTML获取选中tr下td值
  • js使用for循环及if语句决断七个一样的name
  • JS使用for循环遍历Table的保有单元格内容
  • JS数组的遍历格局for循环与for...in
  • javascript for循环从入门到偏门(作用优化 奇特用法)
  • javascript forEach通用循环遍历方法
  • js 数组的for循环到底应该怎么写?
  • javascript下for循环用法小结
  • JS for循环中i 和 i的分别介绍

例:

效益:遍历对象属性,把属性名和属性值都建议来

do/while - 同样当钦定的原则为 true 时循环钦定的代码块

for/in - 循环遍历对象的性质

例:

数组也足以如此遍历,但不推荐,因为不可能保险顺序,并且如若在Array的原型上增多了质量,那几个脾性也会被遍历出来。

for/in - 循环遍历对象的属性

while - 当内定的尺度为 true 时循环钦点的代码块

var point={x:1,y:2}; //对象直接量
var has_x="x" in point; //返回true
var has_z="z" in point; //返回false
var ts="toString" in point;//返回true,toString为继承方法

1. in运算符:需要其右臂的运算数是三个字符串,或能够被转移为字符串,右侧的运算数是一个对象或数组。若是该运算符左侧包车型大巴值是左臂对象的一个属性名,则赶回true。

for-in循环应该用在非数组对象的遍历上,使用for-in进行巡回也被可以称作“枚举”。

      javascript的数组是一种奇特的目的,由此for/in循环能够像枚举对象属性同样枚举数组下标。

while - 当钦定的标准为 true 时循环钦点的代码块

例如:

  

例:

例如:

for-in循环应该用在非数组对象的遍历上,使用for-in实行巡回也被称之为“枚举”。

    4. 数组常用的存取属性运算符是“[]”,而不是“.”。使用“[]”来命名属性名师字符串值,是动态的,能够在运维时改变,并不是八个标记符“.”。

   2. for/in语句:语法,

  

从本领中校,你能够利用for-in循环数组(因为JavaScript中数组也是指标),但那是不引入的。因为借使数组对象已被自定义的效果与利益加强,就大概产生逻辑错误。别的,在for-in中,属性列表的各样(序列)是不能够保障的。所以最佳数组使用正规的for循环,对象使用for-in循环。

  

for-in循环

  

for(var prop in my_object) {
    document.write("name:" prop ";value:" my_object[prop],"<br>");
  }

stock存取的是每支股票(stock)的名字。      

例:

本文由9159.com发布于前端,转载请注明出处:for/in - 循环遍历对象的属性,while - 当指定的条件

关键词: 9159.com