先说说JS是容易被误解的语言的观点。从名字上来看,"Java"这似乎暗示着这门语言与Java的关系;好像这门语言是Java的子集,或比Java弱。但实际与Java并无关系,如果说非要有关系,那可以说说一点八卦。当年Netscape确实为了让它快速发展,与Sun公司有过合作;其中为了借大热的Java东风,改名Javascript(原来叫做Livescript).JS第一版仅仅用了10天,未经打磨就广泛使用至今(什么是"网红",这才是"网红")。JS不可避免的有许多设计失误,比如全局变量的设计模式。标准的出现是晚于JS的,而且标准也并不"标准",这导致了许多滥用。由于JS通常是用在web的,从而被认为只能用于浏览器,但它却可以用在服务器等地方的。它的语法类C,但实际上是"披着C外衣的Lisp",是一种面向对象的函数式编程语言。与传统的面向对象的语言相比,它不是基于类的继承,而是基于原型的继承。

公司是不会让人使用语言的每个特性的,我们要使用那部分最可靠、可维护、方便阅读的成熟的子集。

为什么要使用JS?一方面是没有选择;另一方面是这门语言本身有 它自身的优雅、灵活的地方,具有极强的表达能力。

DC认为JS有许多优秀的想法:函数、弱类型、动态对象、字面量的对象表示法。糟糕的想法是:基于全局变量的编程模式。JS是披着C外衣的Lisp(基于lambda演算的语言,与人工智能极为相关)。

强类型语言可以在编译阶段找到程序的类型错误,弱类型做不到;但通常类型错误不是最主要的问题。弱类型可以让人不必疲于应对造型系统。

对象的字面量表示法很好用,DC也借鉴到了JSON中作为一种代替XML通信的数据传输格式。

JS的连接单元是基于全局变量的。编译单元的顶级变量会到全局对象这个公共命名空间。

JS 精粹(一)的更多相关文章

  1. JS精粹(二)

    这章主要讲语法,DC使用了表示形式语法的巴克斯范式图,这的确比语言来得准确简洁.我只想表达一个问题:表达式与表达式语句的关系.因为其他问题很明白. 从DC的巴科斯范式图上大致可以认为,表达式是比表达式 ...

  2. JS精粹:下半部分

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. JS 精粹( 函数)

    函数是对象,它与其它对象唯一的不同是它可以调用.函数可实现:代码复用.信息隐藏.代码组合调用. 建立函数时会建立:上下文.调用函数的代码.每个函数(除Function.prototype)都会有一个原 ...

  4. JS 精粹(三)

    (一)基本问题 JS的数据类型(不是数据结构)分:简单数据类型(undefined\null\boolean\string\number\symbol).复杂数据类型(object). 对象是可变的键 ...

  5. JS精粹知识点和我的解释

    函数若是不return则默认返回undefined const value=()=>{ let a=3; } let value_test; console.log(value(),value_ ...

  6. JS:采摘自JS精粹

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. JS 精粹(方法)

    数组方法: 模拟队列的操作:push()/shift();unshift()/pop();模拟栈操作:push()/pop(); push()返回增加后的长度.unshift也是.pop和shift返 ...

  8. js学习心得(一)(菜鸟)

    js基础已经打了好几次了,慕课跟着学了一遍,视频看了一些,还读了诸如 jsdom艺术,js精粹以及锋利jq(没读完). 这次再次重头读并写一遍代码,工具书是js,查缺补漏高级程序设计第二版,犀牛书有点 ...

  9. 让JavaScript回归函数式编程的本质

    JavaScript是一门被误会最深的语言,这话一点不假,我们看下它的发展历史. 1995年,Netscape要推向市场,需要一门脚本语言来配套它.是使用一门已有的语言,还是发明一门新的语言,这也不是 ...

随机推荐

  1. C++ 顶层 const

    我的主力博客:半亩方塘 本文的主要參考来源来自于:C++ Primer 中文版(第 5 版) 第 57 面至第 58 面 1. 顶层 const 与底层 const 概念 我们知道,指针本身是一个对象 ...

  2. Activity(二)

    多个Activity之间的调用 建立一个Activity 配置layout文件夹下fragment_main.xml文件 在layout下新建other.xml文件 xml文件创建的id需要编译才能生 ...

  3. nginx添加需要代理的域名 配置

    dap.cns.360buy.com为需要nginx代理的域名,被代理的端口为:8089,配置需要在${nginx_home}/conf/nginx.conf的文件中加入如下配置即可 upstream ...

  4. JavaScript 【非IE DOM2级XML】

    DOM2中的XML IE可以实现了对XML字符串或XML文件的读取,其他浏览器也各自实现了对XML处理功能.DOM2级在document.implementaion中引入了createDocument ...

  5. 关于HTML css的一些题目

    1.dcutype是什么,他是干嘛用的 doctype是文档的一种声明,告诉浏览器器用什么规则来解析文档. 2.ul ol dl分别适用于什么地方? ul无序列表 ol有序列表 dl是定义列表,会默认 ...

  6. The executable was signed with invalid entitlements新设备run出现这个问题

    出现这个问题一般是新手不熟悉开发者发布流程造成地 一定要安开发者流程一步一步走 这样就不会出错了 注意这几个地方地设置 1.

  7. Remove Element,Remove Duplicates from Sorted Array,Remove Duplicates from Sorted Array II

    以下三个问题的典型的两个指针处理数组的问题,一个指针用于遍历,一个指针用于指向当前处理到位置 一:Remove Element Given an array and a value, remove a ...

  8. 接触CrackMe 第一个

    今天刚接触这个 做了一个简单的. 用Onlydbg加载之后,对GetDlgItemTextA函数下断点,因为程序是在控件上获取数据的. Register输入Name和Serial点击Ok之后,断点响应 ...

  9. 图片与文字在div里实现垂直水平都居中

    第一种方法,利用盒布局实现   <style type="text/css">/*盒布局实现图片与文字水平垂直居中*/ .div1{ width: 100%; heig ...

  10. MySql 优化 网上资料

    1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...