- JS虽然是解释性语言, 但是也有编译过程, 只不过前一步编译, 后一步就执行
- JS是动态语言, 意味着可以在变量中保存不同类型的值, 意思就是值是有类型之分, 而变量是没有类型之分的
- 注意不相等和不等是不一样的, 不相等符号是
!=
或!==
, 而不等符号是>
,>=
,<
,<=
, 不等符号的比较规则是允许coercion, 就是说是允许强制转换的 - 不等符号的比较规则:
(1). 如果不等符号两边都是字符串, 则按照字典序来比较,
例如: 'a'< 'b', 结果是true, 比较的集合是按照unicode的顺序
(2). 如果一个不是字符串, 两边的值都会强制转换成number来比较,
(3). 例如: 'a' > 41, 'a' < 41, 'a' == 41, 结果都是false, 因为如果其中一个不能转化成有效数字, 那么就变成NaN, 规范中说明, NaN是大于和小于任何值, 还有NaN不等于任何值包括它本身, 所以才会有这样的结果
- 变量名为字母, 数字, _, $, 是在传统的ASCII编码方式下考虑的, 如果是在非传统的Unicode下考虑, 情况要复杂的多
- 保留字和关键字虽然不能用在变量名上, 但是可以用在属性名上
-
使用严格模式有一个关键的区别在于不能隐式的声明全局变量
- 前面必须加分号否则会引起歧义的五个符号, '+', '-', '/', '()', '[]', 因为'+'会被认为是算术加法, '-'会被认为是算术减法, '/'会被认为是算术除法, '()'会被认为是函数调用, '[]'会被认为是对象属性访问