JavaScript的语言组成
- 基本语法:C
- 数据类型 内存管理:Java
- 函数式编程:Scheme 函数是第一等公民
- 原型继承:Self 基于原型prototype的继承机制
奇葩的JavaScript代码
('b'+'a'+ + 'a'+'a'+ +'').toLowerCase()//"banana0"
0 == '0' //true
0 == 【】 //true
'0' == 【】 //false
typeof NaN //number
99999999999//100000000000
0.1+0.2==0.3//false 精度丢失
Math.max()//-[Infinity]()** 负无穷
Math.min()//Infinity 正无穷
【】 + 【】 //""
【】 + {} //"【object object】"
{} + 【】 // 0
true + true + true===3 //true
true - true //0
(!+【】+【】+!【】).length//9 "truefalse"
9 + "1" //91
91 - "1" //90
【】 == false //true
0==false //true
undefined == false //true
NaN == false //true
"" == false //true 包括多空格
null == false //true
语言特性
动态类型语言 JS 编译环境JIT Just In Time Compilation
静态类型语言 C++ 编译环境 AOT Ahead Of Time
写好JS的一些原则
- 各司其职
-HTML/CSS/JS 各司其职
这个部分我的理解是,HTML, CSS和 JavaScript的代码要分开写,不要同时出现在一个文件里面。
-应当避免不必要的由JavaScript直接操作样式
-可以用class来表示状态
-纯展示类交互应寻求零JS方案
- 组件封装
-组件设计的原则:封装性、正确性、扩展性、复用性。
-实现组件的步骤:结构设计、展现效果、行为设计。
-三次重构:插件化、模板化、抽象化(组件框架)。
- 过程抽象
过程抽象是指用来处理局部细节控制的一些方法,是函数式编程思想的基础应用。