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

  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会是按索引数组的个数来处理的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,755评论 0 4
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,743评论 1 51
  • 喜欢家乡的海, 还记得上个暑假,三个小伙伴相约一起去看日出,这样突如其来的好情调不是经常有,俗人一个怎么欣赏得...
    心伤人阅读 228评论 0 0
  • 高三那一年,微信出来了。大一我第一次用上微信。我看着朋友圈里他和另一个笑得眉眼弯弯的清秀姑娘一年前的合影,终于闭上...
    木颦阅读 597评论 0 2
  • 上周末我听说,曾经的同事刘姐,跟老公离婚了。如今的她没有工作,没有能力,关键还要把日子重新过下去。 大家都很为她打...
    矗美联合创始人英子阅读 322评论 0 0

友情链接更多精彩内容