一、变量

全局对象:

1. 每个javascript环境都有一个全局对象,在任意函数外都能用this访问到这个全局对象。

此外,该全局对象有一个附加属性window,通常这个window也指该全局对象本身。

 创建的所有全局变量是这个全局对象的属性。

2. 尽量少使用全局变量:a. 始终使用var申明变量;

              b. 不要用任务链来进行部分var申明,即 var  a = b = 0,此时b为全局变量。

3. 通过var申明的全局变量不能被删除,没有通过var申明的隐式全局变量则可以被删除。

for 循环:

for(var i = 0; i < myArr.length; i++) {}

每次循环时都要去获取数组的长度,降低效率,尤其是对于一个HTMLCollection(DOM方法返回的对象)。

改进方法: 缓存数组长度,即 for (var i = 0, max = myArr.length; i < max; i++) {}

此外:使用 i = i + 1 / i += 1 来替换 i++。

for-in 循环:

特性: 属性列表不能保证顺序。

适用:非数组对象的遍历上。

hasOwnProperty()方法的用处:

1. 遍历对象属性时,可以过滤掉从原型链上下来的属性。以避免每次遍历的时候,会向上查询原型链,降低效率。

例:var man = {

    hands: 2,

    legs: 2,

    heads: 1

  };

for (var i in man) {

  if (man.hasOwnProperty(i)) {console.log(i, ":", man[i]);}

   //logs hands: 2

       legs: 2

       heads: 1

};

for (var i in man) {

  console.log(i, ":", man[i]);

  //logs hands: 2

      legs: 2

      heads: 1

      clone: function()

};

2. 取消Object.prototype上的方法

例:for (var i in man) {

    if(Object.prototype.hasOwnProperty.call(man, i) {

      console.log(i, ":", man[i]);

     })

}

JavaScript学习总结(一、变量、for和for-in循环)的更多相关文章

  1. 原生 javascript 学习之 js变量

    1.变量的命名 方法的命名(驼峰命名法) 全部小写 : 单词与单词之间全部下划线 (my_namespace) 大小写混合 : 第一个单词首字母小写其他单词首字母大写. 规则 首字符 英文字母或下划线 ...

  2. javascript学习笔记(三):运算符、循环语句

    javascript的运算符.条件语句.循环语句的使用方法大部分和c语言类似,但是值得注意的是,运算符中"=="和"==="的使用方法和c语言有区别:在java ...

  3. JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别

    JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...

  4. 3. Javascript学习笔记——变量、内存、作用域

    3. 变量.内存.作用域 3.1 基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值[Undefined.Null.Boolean.Number 和 Strin ...

  5. Web编程基础--HTML、CSS、JavaScript 学习之课程作业“仿360极速浏览器新标签页”

    Web编程基础--HTML.CSS.JavaScript 学习之课程作业"仿360极速浏览器新标签页" 背景: 作为一个中专网站建设出身,之前总是做静态的HTML+CSS+DIV没 ...

  6. JavaScript:修改作用域外变量

    今天在看JavaScript学习指南的时候做的课后习题,也因此详细的对函数的传入参数进行比较深入的研究. 题目如下: 函数如何才能修改其作用域之外的变量?编写一个函数,由1~5的数字组成的数组作为参数 ...

  7. JavaScript学习(2):对象、集合以及错误处理

    在这篇文章里,我们讨论一下JavaScript中的对象.数组以及错误处理. 1. 对象 对象是JavaScript中的一种基本类型,它内部包含一些属性,我们可以对这些属性进行增删操作. 1.1 属性 ...

  8. JavaScript学习10 JS数据类型、强制类型转换和对象属性

    JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...

  9. JavaScript学习06 JS事件对象

    JavaScript学习06 JS事件对象 事件对象:当事件发生时,浏览器自动建立该对象,并包含该事件的类型.鼠标坐标等. 事件对象的属性:格式:event.属性. 一些说明: event代表事件的状 ...

  10. JavaScript学习04 对象

    JavaScript学习04 对象 默认对象 日期对象Date, 格式:日期对象名称=new Date([日期参数]) 日期参数: 1.省略(最常用): 2.英文-数值格式:月 日,公元年 [时:分: ...

随机推荐

  1. android_rooting_tools 项目介绍(CVE-2012-4220)

    android_rooting_tools是GITHUB上的一个Android内核漏洞提权项目,包含多套内核漏洞的exploit代码: EXPLOIT CVE 简单描述 libdiagexploit ...

  2. box布局中文字溢出问题

    如果不设置-webkit-box-flex:1:会溢出,设置width也行,在电脑上模拟可能会有问题,手机上没问题

  3. D:\yyy\UNetSegmentation_code_20180301\data\train

    key1 numpy.save("filename.npy",a) 利用这种方法,保存文件的后缀名字一定会被置为.npy,这种格式最好只用 numpy.load("fil ...

  4. linux 执行脚本

    crontab -e 直接编辑定时脚本 保存后,在/var/spool/cron/下自动生成一个以用户名命名的脚本文件.

  5. L3-019 代码排版 (30 分)

    某编程大赛中设计有一个挑战环节,选手可以查看其他选手的代码,发现错误后,提交一组测试数据将对手挑落马下.为了减小被挑战的几率,有些选手会故意将代码写得很难看懂,比如把所有回车去掉,提交所有内容都在一行 ...

  6. (2)MySQL的增删改查基本操作

    数据库增删改查的基本操作(数据文件在data目录下) 数据库的专业术语 1.文件夹:数据库 2.文件:数据表 指令的注意事项 1.用use的时候指令结尾不需要跟一个分号 ‘:’ 2.如果用show或其 ...

  7. heap 的一些用法

    noip  合并果子 #include<bits/stdc++.h> using namespace std; int heap[maxn]; ; void input(int d) { ...

  8. python------模块定义、导入、优化 ------->Yaml, l模块

    一. yaml模块 用来做配置文件. 需要pip安装该包. 二. ConfigParser模块 用来生成和修改常见配置文件,在python3.x版本中更名为configparser. (什么是配置文件 ...

  9. 在使用 interface 声明一个接口时,只可以使用那个修饰符修饰该接口?

    这是一个看似简单其实挺有深意的题目,答案应该大多数人都知道是什么,不过原理和原因相比很少有人仔细研究过.对于本题,我有三点说明,希望看到这个评论的人能从这三点中看到你以前没注意到的东西:  ①接口的声 ...

  10. itcast-spring

    黑马2014  spring后期 ssh整合后期  讲解不清楚 源码讲解太多   spring重新开始  itcast2016版本 介绍 Spring搭建 约束引入注意事项 导入至eclipse:wi ...