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.英文-数值格式:月 日,公元年 [时:分: ...
随机推荐
- HDU 6047 17多校 Maximum Sequence(优先队列)
Problem Description Steph is extremely obsessed with “sequence problems” that are usually seen on ma ...
- http头之keep-alive
1.什么是keep-alive模式? 我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HT ...
- grep命令相关用法
grep命令相关参数: -i:忽略大小写 --color:高亮显示匹配到的信息 -v:反向查找,没匹配到的行显示出来 -o:只显示被模式匹配到的串本身 正则表达式: .*:任意长度的任意字符,贪婪模式 ...
- Android内核栈溢出与ROP(CVE-2013-2597)
一.准备 由于内核栈不可执行(NX),栈溢出利用需用到ROP.简单回顾一下ARM ROP. 漏洞演示代码如下,网上随便找了个. char *str="/system/bin/sh" ...
- The repository 'http://cdn.debian.net/debian stretch Release' is not signed.
/********************************************************************************* * The repository ...
- ImportError: No module named 'xml'
/********************************************************************************* * ImportError: No ...
- pytorch实现style transfer
说是实现,其实并不是我自己实现的 亮出代码:https://github.com/yunjey/pytorch-tutorial/tree/master/tutorials/03-advanced/n ...
- J - FatMouse's Speed
p的思路不一定要到最后去找到ans:也可以设置成在中间找到ans:比如J - FatMouse's Speed 这个题,如果要是让dp[n]成为最终答案的话,即到了i,最差的情况也是dp[i-1],就 ...
- 《DSP using MATLAB》Problem 7.1
只有春节那么几天才能和家人团聚,看着爸爸妈妈一年比一年老,自己还是一无所有,照顾好自己尚且惭愧,真是悲从中来,又能怎么办呢, 唯有奋发努力,时不我待,多想想怎么赚钱,加油. 代码: function ...
- VxWorks笔记
利用vxWorks可裁减可动态链接特性进行模块调试的分析 a) 首先,可将root.c简化,去掉大部分不需要加载的模块和想要调试的模块,以加快系统启动速度. b) 如果vxworks加载的.o中引用了 ...