JavaScript学习总结(一、变量、for和for-in循环)
一、变量
全局对象:
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循环)的更多相关文章
- 原生 javascript 学习之 js变量
1.变量的命名 方法的命名(驼峰命名法) 全部小写 : 单词与单词之间全部下划线 (my_namespace) 大小写混合 : 第一个单词首字母小写其他单词首字母大写. 规则 首字符 英文字母或下划线 ...
- javascript学习笔记(三):运算符、循环语句
javascript的运算符.条件语句.循环语句的使用方法大部分和c语言类似,但是值得注意的是,运算符中"=="和"==="的使用方法和c语言有区别:在java ...
- JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...
- 3. Javascript学习笔记——变量、内存、作用域
3. 变量.内存.作用域 3.1 基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值[Undefined.Null.Boolean.Number 和 Strin ...
- Web编程基础--HTML、CSS、JavaScript 学习之课程作业“仿360极速浏览器新标签页”
Web编程基础--HTML.CSS.JavaScript 学习之课程作业"仿360极速浏览器新标签页" 背景: 作为一个中专网站建设出身,之前总是做静态的HTML+CSS+DIV没 ...
- JavaScript:修改作用域外变量
今天在看JavaScript学习指南的时候做的课后习题,也因此详细的对函数的传入参数进行比较深入的研究. 题目如下: 函数如何才能修改其作用域之外的变量?编写一个函数,由1~5的数字组成的数组作为参数 ...
- JavaScript学习(2):对象、集合以及错误处理
在这篇文章里,我们讨论一下JavaScript中的对象.数组以及错误处理. 1. 对象 对象是JavaScript中的一种基本类型,它内部包含一些属性,我们可以对这些属性进行增删操作. 1.1 属性 ...
- JavaScript学习10 JS数据类型、强制类型转换和对象属性
JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...
- JavaScript学习06 JS事件对象
JavaScript学习06 JS事件对象 事件对象:当事件发生时,浏览器自动建立该对象,并包含该事件的类型.鼠标坐标等. 事件对象的属性:格式:event.属性. 一些说明: event代表事件的状 ...
- JavaScript学习04 对象
JavaScript学习04 对象 默认对象 日期对象Date, 格式:日期对象名称=new Date([日期参数]) 日期参数: 1.省略(最常用): 2.英文-数值格式:月 日,公元年 [时:分: ...
随机推荐
- 2017ICPC南宁赛区网络赛 Minimum Distance in a Star Graph (bfs)
In this problem, we will define a graph called star graph, and the question is to find the minimum d ...
- ajax跨域(No 'Access-Control-Allow-Origin' header is present on the requested resource)
问题 在某域名下使用Ajax向另一个域名下的页面请求数据,会遇到跨域问题.另一个域名必须在response中添加 Access-Control-Allow-Origin 的header,才能让前者成功 ...
- Dalvik源码阅读笔记(二)
DVM 类加载原理: DEX 文件加载到内存中 DvmDex 结构后,还没有完成类的解析工作,我们将 DEX 中的类填充到 ClassObject 结构的过程称为类加载. ClassObject 用来 ...
- ORA-00600: internal error code, arguments: [kcblasm_1], [103], [] bug
巡检发现存在alert 日志存在ORA-600 1.0 查询alter 对应的Trace日志 /oracle/admin/fgsquery/udump/fgsquery_ora_21777.trc O ...
- Samsung_tiny4412(驱动笔记02)----ASM with C,MMU,Exception,GIC
/**************************************************************************** * * ASM with C,MMU,Exc ...
- Java中的初始化顺序
一.在创建类时为成员变量赋值和在构造函数中的赋值的先后顺序 在未用构造器之前其实已经将类的字段进行了赋值只是在调用构造器时,又将类的字段进行了重新的赋值.如下: package com.cjm.in ...
- SLES 12 SP2 安装src.rpm软件包
系统型号: SUSE Enterprise mv systemd-228-117.12.src.rpm systemd cd systemd 执行下面的命令解压: rpm2c ...
- Gym102040 .Asia Dhaka Regional Contest(寒假自训第9场)
B .Counting Inversion 题意:给定L,R,求这个区间的逆序对数之和.(L,R<1e15) 思路:一看这个范围就知道是数位DP. 只是维护的东西稍微多一点,需要记录后面的各种数 ...
- 学号 20155219 《Java程序设计》第1周学习总结
学号 20155219 <Java程序设计>第1周学习总结 教材学习内容总结 JVM:是JAVA程序唯一认识的操作系统,其可执行文件为.class文档:具有让Java程序跨平台的功能.负责 ...
- FZU软工第四次作业-团队介绍
目录 团队展示----旅法师 团队成员 队名----旅法师 拟作的团队项目描述 队员风采 团队首次合照 团队的特色描述 团队展示----旅法师 本次作业链接 团队成员 031602305 陈玮 031 ...