美文网首页
JavaScript语言精髓与编程实践笔记(6)

JavaScript语言精髓与编程实践笔记(6)

作者: a_pioneer | 来源:发表于2017-07-26 21:31 被阅读0次
  1. 函数式语言: 通过连续表达式运算求值的语言
  • 函数是运算元
  • 函数内保存数据
  • 函数内的运算对函数外无副作用
  1. JS 中函数作为参数时,也是传递引用的,但没有地址的概念。由于彻底杜绝了地址运算,也就没有了地址运算的隐患。函数只有运算元的概念而没有地址概念。函数参数与普通参数没有什么不同。
  2. 函数内保持数据的特性叫闭包
  3. 函数式语言中, 函数并不是精髓,真正的精髓是运算函数只是封装运算的一种手段。
  4. 对象的构造,函数与方法的调用,本质上是表达式运算。
  5. 如果用函数来模拟循环,必然面临一个问题,栈溢出
  • 递归中可以存在不占用栈的情况,就是尾递归
  • 尾递归:在函数执行序列的最后一个表达式中出现递归调用,由于是最后一个表达式,当前函数不需要为下次调用保留上下文环境。
  • JS的解释环境并不支持尾递归特性,因此函数递归将消耗大量内存。
  1. 值参与计算,变量其实是值的寄存。在函数式语言中,除了值声明和函数中的返回子句外,其他的语句都是可以被消灭的。
  2. 当运算符等义与某个函数时,JS就具有了函数式语言的概念。
  3. 不论从 arguments 还是形参,都可以修改入口参数的值。
  4. JS 中所有的东西都是值。
  5. 标识符优先级
  • 内部函数名优于参数名
  • 内部函数名与参数名优于arguments
  • 内部函数名与参数名优于var变量声明
  1. 在执行期将直接量做表达式的时候,它没有了语法期命名的含义。所以(function object() {})等价于 (function () {})。
  2. JS动态语言特性
  • 动态类型绑定
  • 动态存储绑定
  • 动态执行 eval
  1. 调用对象方法与普通函数没有本质的不同,唯一差异仅在与this引用。
  2. 构造器的原型创建自系统内部。是不可被外部覆盖的标识符Object,因此即使Object被重写,原型也总能被创建。
  3. 直接量声明总会调用内部对象系统来构建对象。构造器与直接量声明是两套系统。
  4. 发生存取运算时,值类型才会发生‘包装’
  5. 关联对象是实现对象系统的基础。
  6. JS中数组是关联数组,内存并不是连续分配的有序数组。但它可以表现的像索引数组。
  7. for()索引效率低于 for...in,因为for...in会是按索引数组的个数来处理的。

相关文章

网友评论

      本文标题:JavaScript语言精髓与编程实践笔记(6)

      本文链接:https://www.haomeiwen.com/subject/zvaokxtx.html