一、严格模式
定义了一种不同的解析和执行模型,规范了不确定行为,对不安全行为进行错误抛出,包括以下四点:
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
具体可参考:阮一峰严格模式详解;
二、语法语句
区分大小写、驼峰法命名、语句没有分号也有效,单行条件语句仍需加上{}
关键字:function if else break continue try cacth do while for if delete in等
保留字:abstract boolean byte int interface static等
变量:松散类型——可以用来保存任何值;var的使用使之成为局部变量,缺省则变量默认为全局变量;
三、数据类型
5中基本类型:Null Undefined Number Boolean String
1种复杂类型:Object
引用类型:Object Array Function Date RegExp 基本包装类型
四、类型区分
typeof操作符——五种基本数据类型,除了null,null被认为是一个空对象引用,返回object
instanceof ——instanceof其实是用来判断一个变量是否为某个对象的实例
constructor——可以返回对象相应的构造函数
具体可参考如下博文:点击打开链接
五、undefined、null辨析
一篇好博文,此处不重复造轮子了,阮一峰undefined和null的区别
六、一些区别、注意
Boolean类型只有两个字面值:true和false,而且这两个值跟数字值不是一回事,区分大小写
Number类型支持十进制、八进制(严格模式下无效)和十六进制表示;保存浮点数值的内存是整数的两倍,会发生转换
Number.MAX_VALUE、Number.NEGATIVE_INFINITY和Infinity
NaN——任何数值除以0返回NaN,NaN不等于NaN
数值转换:
Number()、parseInt()和parseFloat()
1、Number()转换规则
如果是数字值,简单传入和返回;
如果是布尔值,true-----1;false------0;
如果是null------0;
如果是undefined------NaN;
如果是字符串:
字符串中只含数字,则转换为十进制;
字符串中包含有效浮点格式,转换为浮点数;
字符串中包含十六进制,转换为十进制;
字符串是空,转换为0;
除以上以外,转换为NaN;
如果是对象,调用对象的valueOf方法,在按照前述规则转换;如果转换结果为NaN,则先调用对象的toString方法,再按照前述规则转换。
2、parseInt()——较为常用
看是否符合数值模式,它会忽略字符串前面的空格,直到找到第一个非空字符;解析直到遇到了一个非数字字符;
允许指定数值进制
Object类型
对象——一组数据和功能的集合;
var o = new Object();或者 new Object;
实例的属性和方法
constructor、hasOwnProperty()、isPropertyOf()、toLocaleString()、toString()、valueOf()
相等操作符
==和!= (先转换再比较)
===和!== (不转换)
<span style="font-size:18px;">null == undefined 返回true
null === undefined 返回false</span>
<span style="font-size:18px;">var result = ("55" == 55) 返回true</span>
<span style="font-size:18px;">var result = ("55" === 55) 返回false </span>