从项目中总结的js知识点
1. 数字字符串和数字进行比较可以得出正确结果,却不能正确判断是否在一个数字数组中。如以下程序:
var s = '8', n = 8, arr = [1,2,8,9];
console.log(s==n ? 'yes' : 'no');
console.log($.inArray(s, arr)!=-1 ? 'yes' : 'no');
console.log(arr.indexOf(s)!=-1 ? 'yes' : 'no');
打印出来结果分别是:yes、no、no。
在JavaScript中经常会遇到数字字符串,为了防止这种情况的出现,若是用于数字数组判断,应该使用parseInt()函数将其转化为int类型。
2. 使用$.each()函数来遍历数组的时候,默认下标从0开始连续访问至数组的最大下标,中间不存在的下标值为”undefined”,且字符串下标元素不会被访问到。如以下程序:
var arr = [];
arr[1] = 1;
arr[4] = 4;
arr['aa'] = 'aa';
console.log(arr);
$.each(arr, function(i, o) {
console.log(i, o);
});
打印结果为(数组长度也不正确):
3. 在使用了异步请求的程序中,访问某个数据对象出现”undefined”,一般是异步请求还没完成,应该在确保异步请求已完成的地方访问请求得到的数据。
4. 给html元素绑定的click事件是异步的,点击之后才会触发。如果使用循环给多个元素绑定click事件,而click事件的方法中使用的参数值又随着循环体的迭代而改变,那么无论点击哪个元素,触发的都将是最后一个元素的click事件。这种情况下,可以在需要绑定click事件的元素中自定义一些属性,把参数的值写死在里面,然后在click事件的方法中读取当前元素的自定义属性值作为参数值,这样就可以避免以上问题的出现了。
5. 尽可能减少操作dom的次数。若需要使用字符串拼接生成html元素,可以把所有需要生成的元素都拼接到字符串中,然后一次性写入dom。
6. 能在循环外做的动作就不要放在循环内部了,事件注册一般都不需要在循环内部。
7. 滚动条滚动不需要计算页面内容和滚动条之间滚动距离的比例,直接使用页面内容的滚动距离即可。
8. 一般不要在页面元素定义太多的id,容易冲突,可以使用元素之间的遍历关系来定位需要操作的元素。
9. 使用indexOf()函数来判断一个数组是否包含某个元素其实也是一个循环判断。
从项目中总结的js知识点的更多相关文章
- win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件
win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...
- 在 Ionic2 TypeScript 项目中导入第三方 JS 库
原文发表于我的技术博客 本文分享了在Ionic2 TypeScript 项目中导入第三方 JS 库的方法,供参考. 原文发表于我的技术博客 1. Typings 的方式 因在 TypeScript 中 ...
- JAVA项目中常用的异常知识点总结
JAVA项目中常用的异常知识点总结 1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用 ...
- 1.在项目中使用D3.js
在项目中使用D3.js D3.js(全称:Data-Driven Documents)是一个基于数据操作文档的JavaScript库.D3帮助您使用HTML.SVG和CSS使数据生动起来.D3对web ...
- vue2项目中引用外部js文件
vue2项目目录如下(utils文件夹是自己手工建的,然后在utils里新建js文件): 使用import导入文件时,注意路径,路径不对会报错: 导入之后使用外部js函数时,直接写导入时的名字加小括号 ...
- 在vue项目中使用canvas-nest.js,报parameter 1 is not of type 'Element'
canvas-nest.js是一款轻量的网页特效,如图: github地址:https://github.com/hustcc/canvas-nest.js 在普通的html项目中,只要将<sc ...
- 关于Eclipse项目中加入jquery.js文件报错(missing semicolon)问题
在使用Eclipse3.7及以后的版本的时候,加入jQuery文件会报错(missing semicolon),文件中会显示红色小X,虽然这个错误并不会影响项目的运行,但是这个却会大大的影响到开发人员 ...
- 【js】项目中遇到的零星知识点
1.将进行url编码的json字符串转成json对象 在解析为json对象之前,要先用decodeURIComponent(str)来进行解码,然后这json串又变成了我们原先的json串了.然后我们 ...
- vue项目中使用md5.js及base64.js
一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...
随机推荐
- 201521123074 《Java程序设计》第1周学习总结
1. 本章学习总结第一周学习总结: 学习了java语言的历史与发展,运行过程,安装了eclipse编程平台,试着编写了java程序. 2. 书面作业: Q 1.为什么java程序可以跨平台运行?执行j ...
- Java:java中BufferedReader的read()及readLine()方法的使用心得
BufferedReader的readLine()方法是阻塞式的, 如果到达流末尾, 就返回null, 但如果client的socket末经关闭就销毁, 则会产生IO异常. 正常的方法就是使用sock ...
- Caused by: java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual tha
使用了数据库的关键字index,如果有类似的错误,看看自己有没有使用关键字!
- Activiti-03-query api
Query API 有两种方式从引擎中查询数据, 查询 API 和本地查询. API方式: List<Task> tasks = taskService.createTaskQuery ...
- JDBC操作数据库之修改数据
使用JDBC修改数据库中的数据,起操作方法是和添加数据差不多的,只不过在修改数据的时候还要用到UPDATE语句来实现的,例如:把图书信息id为1的图书数量改为100,其sql语句是:update bo ...
- 比较JqGrid与XtraGrid
此只能比较两者的功能优劣,实现某种功能.效果的方便性和效率.首先分别粗略介绍XtraGrid和jqGrid DevExpress是目前.net下最为强大和完整的UI控件库, XtraGrid是这个控件 ...
- JPEG流封装AVI视频
前言:前几天工作任务,要把JPEG流封装为AVI视频,就找了些AVI文件结构资料和示例代码研究了下,现将学习总结及最终完成的可用代码分享出来,由于本人也是现学现用,如有不恰当或错误之处,欢迎提出! 1 ...
- 【BZOJ】2190 [SDOI2008]仪仗队(欧拉函数)
Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是 ...
- PHP 生成毫秒时间戳
PHP的time()函数生成当前时间的秒数,但是在一些情况下我们需要获取当前服务器时间和GMT(格林威治时间)1970年1月0时0分0秒的毫秒数,与Java中的currentTimeMilis()函数 ...
- struts2中的结果视图类型
实际上在Struts2框架中,一个完整的结果视图配置文件应该是: <action name="Action名称" class="Action类路径" me ...