"javascript世界上最被误解的语言"一文其实误解了javascript

 Javascript被误解的程度似乎出人意料,这门简单得不能再简单的脚本语言用最简单的规则展现出了各种有趣的特性,不断地学习和探索中,我一次又一次的刷新我的认识。

在js的高手中 披着c外衣的lisp被广泛的认可 我想这来自于那篇著名的文章 javascript 世界上最被误解的语言。然而我不同意这种说法 支持函数式编程就是LISP的近亲吗? 这就是原文中的一段:

Lisp in C's Clothing

JavaScript's C-like syntax, including curly braces and the clunky for statement, makes it appear to be an ordinary procedural language. This is misleading because JavaScript has more in common with functional languages like Lisp or Scheme than with C or Java. It has arrays instead of lists and objects instead of property lists. Functions are first class. It has closures. You get lambdas without having to balance all those parens.

arrays instead of lists  Array是一个索引表 它由object实现 js也可以实现linklist,arrays instead of lists就显得牵强了,作为js的内置类型 Array的地位很低 基本上属于库级的内容 跟把list作为核心的lisp是有本质不同的 

 objects instead of property lists js的objects其实就是hashtable 这一点几乎无需置疑 oo不是lisp的特性 也不是lambda演算的特性 js的object跟c++的完全不同 应该说它是c++类的动态版 可以随时添加属性 改变大小,还有很强的反射机制。

Functions are first class. It has closures. 这就是错误的根源了 js的function是什么? js的function是类!因为他的名字而把它看作是跟我们认识中的函数相类似的东西是个根本的错误!

js在funcional和oo之间找到了一个完美的结合点 然而 它却混淆了我们的视线 js的函数声明时声明了一个类 每次执行则把它实例化 只有这样才能解释js函数的行为 执行的总是js函数的实例

 函数非函数 闭包自然也就非闭包了 所谓的闭包 其实是运行时实例化而成的对象的作用域。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值