1. == 比较,它会自动转换数据类型再比较

=== 比较,它不会自动转换数据类型,如果数据类型不一致,返回false
大部分时候应该使用===来比较
2. 使用'use strict'来强制通过var申明变量
3. 注意for...in, for...of 和foreach的区别, for...in 循环属性(数组索引也是属性), for...of 循环值, foreach针对array, map, set有各自不同的回调函数
4. arguments非常有用
5. js函数定义有个特点,它会先扫描函数体的语句,把所有申明的变量提升到函数顶部,但是只是提升变量升明,不会提升变量赋值。
6. 全局变量会绑定到window上,减少冲突的一个方法是把自己的所有变量和函数全部绑定到一个全局变量中,例如|
var myApp = {};
myApp.foo = function(){}
myApp.name = "myapp";
7. js的变量作用域是函数内部,所以for(var i=0;i<10;i++)不能限制变量i只在for循环内部使用,如果要申明一个块级作用域,可以使用ES6引入的let来申明i
另一个新增的关键字是const,用来申明常量
8. IE8支持部分ES5, IE9支持大部分ES5, IE10支持全部ES5, IE11支持少量ES6, 目前ES6的支持性还不好
9. 注意apply和call的用法
10. 闭包可以说是携带状态的函数,并且它的状态可以完全对外隐藏起来,有点类似于java里面对私有变量的封装
11. ES6还支持=>来生成函数,有点类似lambda表达式,使用箭头函数后,this的指向做了一定的修复
12. 尽量不要使用包装对象String, Number, Boolean等等
13. 判断某个全局变量是否存在用typeof window.myVar === 'undefined'
函数内部判断某个变量是否存在用typeof myVar==='undefined'
判断null请使用myVar === null
14. 'a,b c'.split(/[\s\,]+/);//['a','b','c'] 用正则表达式来切分字符串。
/^(\d{3})-(\d{3,8})$/.exec('010-123455');//['010-123455', '010', '123455']用正则表达式来分组提取字符串
默认是贪婪匹配,? - 非贪婪匹配,g-全局搜索, i-忽略大小写, m-多行匹配
15. js没有类和对象的区分,所有的都是对象,要理解对象,就要理解prototype.
可以用var Student = {id:'',name:'',run:function(){}}直接创建一个对象,然后可以用Object.create(Student)创建一个新的基于Student原型的对象
也可以用构造方法的方式创建,构造方法和普通函数没有什么区别,如果使用new 调用一个函数,
它就成为一个构造函数,构造函数应该用大写字母开头。
一个常用的编程模型
function Student(props) {
this.name = props.name || '匿名'; // 默认值为'匿名'
this.grade = props.grade || 1; // 默认值为1
}
//所有实例对象共享这个函数,如果把hello定义在Student内部,则每个student实例都拥有一个hello方法,会增加内存的使用量
Student.prototype.hello = function () {
alert('Hello, ' + this.name + '!');
};
function createStudent(props) {
return new Student(props || {})
}
原型的继承相对比较复杂,需要一个中间函数来形成正确的原型链。
在新的ES6中,增加了class和extends关键字,这样看起来,类的定义就有点像java一样了,不过js原型的基本原理没有变,只是让js引擎自已去把class转换为
原型,避免自己写中间函数,让代码更容易理解和可读
现在很多浏览器还不支持ES6,如果想用ES6的话,可以使用Babel来转换,它会把你的ES6代码转换为ES5的代码
16. 服务端在设置cookie时,应该坚持使用httpOnly来防止cookie中的加密信息被js读取
17. 不应该再使用history这个遗留对象
18. ajax跨域请求的4种方式
1) 通过Flash发送http请求,这个太麻烦,用的很少
2) 通过代理服务器转发,这个也比较麻烦
3) 通过JSONP,这个有限制,只能用GET请求,返回的是js脚本,这是利用了浏览器允许跨域引用js资源
4) 在html5下,可以使用新的跨域策略CORS,这个主要是利用响应头Access-Control-Allow-Origin
19. ES6新增promise可以让异步操作更简洁明了
20. jQuery2.x版本不支持IE8
21. jQuery事件绑定用on, 解除绑定用off, 1.7之前事件绑定是用bind, 之后版本推荐使用on
22. jQuery插件编写原则
1) 给$.fn绑定函数,实现插件的逻辑
2) 插件函数要return this, 以支持链式调用
3) 插件函数要有默认值,绑定在$.fn.<pluginName>.defaults上
4) 用户在调用时可传入设定值以便覆盖默认值
23. 引入underscore/lo-dash库,以便更方面的在js中实现函数式编程, 在ES6下还有一个Sugar.js也不错, 相对而言,网上对lo-dash的期望更高,另一个lazy.js,所说性能更好,但是网上似乎用的不多。
lo-dash有一统的趋势
24. 把网页视为一种客户端,是REST架构可扩展的一个关键。
最佳实践:/static/开头的url用于静态资源文件,/api/开头的url用于rest api,其它的url视为普通的mvc请求

Javascript一些要点记录的更多相关文章

  1. iBatis & myBatis & Hibernate 要点记录

    iBatis & myBatis & Hibernate 要点记录 这三个是当前常用三大持久层框架,对其各自要点简要记录,并对其异同点进行简单比较. 1. iBatis iBatis主 ...

  2. JAVA 中LinkedHashMap要点记录

    JAVA 中LinkedHashMap要点记录 构造函数中可能出现的几个参数说明如下: 1.initialCapacity 初始容量大小,使用无参构造方法时,此值默认是16 2.loadFactor ...

  3. JavaScript实现按键记录,并在关掉网页之前把记录的内容post出去

    最近陈老师让我给新架构加一个按键记录的业务.去学习了JavaScript,网上找了一些代码,最后写出来了: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTM ...

  4. 编写高质量JavaScript代码的基本要点记录

    原文:深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 1.最小全局变量(Minimizing Globals)的重要性 JavaScript通过函数管理作用域.在 ...

  5. python学习第一课要点记录

    写在要点之前的一段话,留给将来的自己:第一次参加编程的培训班,很兴奋很激动,之前都是自己在网上找免费的视频来看,然后跟着写一些课程中的代码,都是照着模子写,没有自己过多的思考.感觉这样学不好,除了多写 ...

  6. JavaScript 使用Document记录cookie

    cookie对于我们使用者来说,有时帮助还是挺大的,比方对于一些不是特别重要的站点,比方公司的測试平台,每次登陆都要手动输入username和password 非常繁琐.所以为了更少的引入其他框架,就 ...

  7. web基础要点记录

    最近公司项目做完了,不怎么忙,翻看了一些基础的资料,文章.就做了个简单的记录. 1.Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示, 可通过加入 CSS 属性  -we ...

  8. Android开发入门要点记录:四大组件

    cocos2dx跨平台开发中需要了解android开发,昨天快速的浏览了一本Android开发入门教程,因为之前也似懂非懂的写过Activity,Intent,XML文件,还有里面许多控件甚至编程思想 ...

  9. JavaScript学习要点

    Javascript相关内容 1.序列化--json - stringify() 将对象转换为字符串 - parse() 将字符串转换为对象 list=[11,22,33,44,55]; 结果:(5) ...

随机推荐

  1. 2、mysql密码过期的修改方法(your password has expired)

    今天打开SQLyog提示密码过期:Your password has expired 解决方法:    1.  启动MySQL服务 2.  启动MySQL后台 3.  执行以下命令 step 1: S ...

  2. Odoo文档管理/知识管理应用实践 - 上传附件

    测试环境: Odoo8.0 Odoo中的文档管理/知识管理可用于保存采购.销售.生产等一系列业务流程中产生的文件.凭证,可关联到具体的每一笔业务操作:也能用于管理公司的合同.资料,创建知识库以分享内部 ...

  3. linux学习(四)-----linux常用指令

    touch 指令 touch 指令创建空文件 基本语法 touch 文件名称 应用实例 案例 1: 创建一个空文件 hello.txt cp 指令 cp 指令拷贝文件到指定目录 基本语法 cp [选项 ...

  4. IDEA常用插件整理

    1. 集成步骤 1.1. 配置环境变量 变量名:CMDER_ROOT 变量值:D:\Tool\cmder 1.2. IDEA中设置 settings->Tool->Terminal She ...

  5. Sql Server实现自动增长

    在学习中遇到这个问题 数据库里有编号字段 BH00001 BH00002 BH00003 BH00004 如何实现自动增长 --下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号. --得 ...

  6. Leetcode429.N-ary Tree Level Order TraversalN叉树的层序遍历

    给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明: 树的深度不会超过 100 ...

  7. apk反编译(6)用ProGuard 混淆、压缩代码,压缩资源。

    1.android官方文档 https://developer.android.com/studio/build/shrink-code  主要内容如下: 1.1 压缩代码 混淆生成的文件:<m ...

  8. 字符串常用方法(转载--https://www.cnblogs.com/ABook/p/5527341.html)

    一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建 ...

  9. Android中Activity的android:windowSoftInputMode属性

    转载 https://blog.csdn.net/qiutiandepaomo/article/details/84028558 windowSoftInputMode属性主要是用来设置窗口软键盘的交 ...

  10. springmvc java程序文件保存地址的路径问题

    会保存为这种斜杠 不论之前填写的是什么样