JS 精粹(一)
先说说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 精粹(一)的更多相关文章
- JS精粹(二)
这章主要讲语法,DC使用了表示形式语法的巴克斯范式图,这的确比语言来得准确简洁.我只想表达一个问题:表达式与表达式语句的关系.因为其他问题很明白. 从DC的巴科斯范式图上大致可以认为,表达式是比表达式 ...
- JS精粹:下半部分
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JS 精粹( 函数)
函数是对象,它与其它对象唯一的不同是它可以调用.函数可实现:代码复用.信息隐藏.代码组合调用. 建立函数时会建立:上下文.调用函数的代码.每个函数(除Function.prototype)都会有一个原 ...
- JS 精粹(三)
(一)基本问题 JS的数据类型(不是数据结构)分:简单数据类型(undefined\null\boolean\string\number\symbol).复杂数据类型(object). 对象是可变的键 ...
- JS精粹知识点和我的解释
函数若是不return则默认返回undefined const value=()=>{ let a=3; } let value_test; console.log(value(),value_ ...
- JS:采摘自JS精粹
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JS 精粹(方法)
数组方法: 模拟队列的操作:push()/shift();unshift()/pop();模拟栈操作:push()/pop(); push()返回增加后的长度.unshift也是.pop和shift返 ...
- js学习心得(一)(菜鸟)
js基础已经打了好几次了,慕课跟着学了一遍,视频看了一些,还读了诸如 jsdom艺术,js精粹以及锋利jq(没读完). 这次再次重头读并写一遍代码,工具书是js,查缺补漏高级程序设计第二版,犀牛书有点 ...
- 让JavaScript回归函数式编程的本质
JavaScript是一门被误会最深的语言,这话一点不假,我们看下它的发展历史. 1995年,Netscape要推向市场,需要一门脚本语言来配套它.是使用一门已有的语言,还是发明一门新的语言,这也不是 ...
随机推荐
- 天气情况(思维,dp思想)
天气情况 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- Eclipse上GIT插件EGIT使用
一.安装EGit插件 參考:MyEclipse8.5整合Git 二.EGit配置 配置个人信息 Window > Preferences > Team > Git > Conf ...
- 树形控件CTreeCtrl的使用
树形控件在界面编程中应用十分普遍,如在资源管理器中和树形结构显示书的文件夹等,我们一步步研究树形控件的使用. 在对话框界面上首先拖动创建一个树,一般我们改变三个属性: Has Buttons显示带有& ...
- JavaScript中模块“写法”
在JavaScript模块到底是什么 event = function() { // do more return { bind: function() {}, unbind: function() ...
- mysql启动报错:Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist
mysql在首次启动的时候可能会报错:Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist 这时候可以执行脚本 ...
- 搭建MyBatis框架
一.开发环境 1.JDK 1.6.0_22 2.MyEclipse 10.7.1 3.Oracle_10g_10.2.0.4 注:各软件版本不是必须的,正常任意版本都行,文件较大就不附上下载地址了,推 ...
- js触摸屏案例
js 手机端触发事事件.javascript手机端/移动端触发事件 处理Touch事件能让你跟踪用户的每一根手指的位置.你可以绑定以下四种Touch事件: 1 2 3 4 touchstart: ...
- android开发获取网络状态,wifi,wap,2g,3g.工具类(一)
android开发获取网络状态整理: package com.gzcivil.utils; import android.content.Context; import android.net.Con ...
- IOS开发 统计XCODE 代码行数
如果要统计ios开发代码,包括头文件的,终端命令进入项目目录下,命令如下 find . -name "*.m" -or -name "*.h" -or -nam ...
- boost信号量 boost::interprocess::interprocess_semaphore的用法
使用方法首先给信号量初始化赋值,可以根据需要设定需要的值,之前在写项目的过程中用这个控制下载的线程个数. boost::interprocess::interprocess_semaphore m_s ...