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知识点的更多相关文章

  1. win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件

    win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...

  2. 在 Ionic2 TypeScript 项目中导入第三方 JS 库

    原文发表于我的技术博客 本文分享了在Ionic2 TypeScript 项目中导入第三方 JS 库的方法,供参考. 原文发表于我的技术博客 1. Typings 的方式 因在 TypeScript 中 ...

  3. JAVA项目中常用的异常知识点总结

    JAVA项目中常用的异常知识点总结 1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用 ...

  4. 1.在项目中使用D3.js

    在项目中使用D3.js D3.js(全称:Data-Driven Documents)是一个基于数据操作文档的JavaScript库.D3帮助您使用HTML.SVG和CSS使数据生动起来.D3对web ...

  5. vue2项目中引用外部js文件

    vue2项目目录如下(utils文件夹是自己手工建的,然后在utils里新建js文件): 使用import导入文件时,注意路径,路径不对会报错: 导入之后使用外部js函数时,直接写导入时的名字加小括号 ...

  6. 在vue项目中使用canvas-nest.js,报parameter 1 is not of type 'Element'

    canvas-nest.js是一款轻量的网页特效,如图: github地址:https://github.com/hustcc/canvas-nest.js 在普通的html项目中,只要将<sc ...

  7. 关于Eclipse项目中加入jquery.js文件报错(missing semicolon)问题

    在使用Eclipse3.7及以后的版本的时候,加入jQuery文件会报错(missing semicolon),文件中会显示红色小X,虽然这个错误并不会影响项目的运行,但是这个却会大大的影响到开发人员 ...

  8. 【js】项目中遇到的零星知识点

    1.将进行url编码的json字符串转成json对象 在解析为json对象之前,要先用decodeURIComponent(str)来进行解码,然后这json串又变成了我们原先的json串了.然后我们 ...

  9. vue项目中使用md5.js及base64.js

    一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...

随机推荐

  1. 看懂类图——UML类图基础

    类图 要学懂设计模式,就需要先看得懂类图,类与类之间的关系是学习设计模式的基础,而在软件工程中,类与类之间的关系是通过UML中的类图来体现. 这篇笔记包含的不会是类图的所有东西,包含的只是各个类之间的 ...

  2. cxgrid学习

    delphi cxgrid控件哪个属性是设置不能编辑? cxgrid控件cxgridDBTable的OptionsData可以选择操作 cxGrid1DBTableView1下选择cxGrid1DBT ...

  3. OSGi-入门篇之模块层(02)

    1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 在OSGi中模块的定义可以参考 ...

  4. Server Tomcat v7.0 Server at localhost failed to start.解决方法

    ---恢复内容开始--- 今天在做jsp项目的时候,Tomcat突然无法打开了,出现的报错是这样的: 也不知道是怎么搞得,百度了老半天看到有的网友是通过两这个方法解决的,连接在这http://blog ...

  5. Python shelve模块的使用方法

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import shelve,time #写 x = shelve. ...

  6. mongodb 与关系型数据库

    设计 MongDB 模式时应注意的问题 根据用户需求来设计模式. 如果想一起使用对象,请将这些对象合并到一个文档中,否则要将它们分开(但是要确保不需要连接). 经常复制数据(但要有一定限度),因为与计 ...

  7. GCD之after

    先介绍下C中的modf函数 函数名:modf 头文件:<math.h> 函数原型:double modf(double x, double *ipart) 函数用途:分解x,以得到x的整数 ...

  8. js Date() 浏览器兼容问题解决

    一般 直接new Date() 是不会出现兼容性问题的,而 new Date(datetimeformatstring) 常常会出现浏览器兼容性问题,为什么,datetimeformatstring中 ...

  9. redhat下yum命令安装(替换为centos yum命令)

    redhat默认自带的yum源需要注册,才能更新,报错:This system is not registered to Red Hat Subscription Management. You ca ...

  10. 《深入理解Java虚拟机》读书笔记-垃圾收集器与内存分配策略

    在堆里存放着java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前需要知道哪些对象还存活,哪些对象已经死去.那怎么样去判断对象是否存活呢? 一.判断对象是否存活算法 1.引用计数法 实现思路:给 ...