Android开发学习JavaScript系列(一):准备

Android开发为什么要学习JavaScript?

这个其实也可以不学。正如我之前在《黑客与画家》的读书感悟中的介绍(传送门),编程语言会返过来对程序员的思维造成一定的影响,现在用多了Java 6做为开发语言的Android应用开发人员学习一门动态语言是很有必要的。所以,我觉得你可以不学JavaScript,但一定要选择一门动态语言(如Python或者Ruby)来体验一下。

学习JavaScript的如处:

  1. 前端、后端和移动端现在都可以用JavaScript开发,这个好处是显而易见的。
  2. JavaScript语言很简洁,有很多的学习资源;
  3. 记得著名的Atwood定律吗?“凡是能用JavaScript写出来的,最终都会用JavaScript写出来。 ”

即使不介绍JavaScript语言本身的好处,单微信小程序选择JavaScript开发都可以引起我们的重视。对于很多移动端的开发来说,React Native、Weex或者微信小程序对我们是一种冲击,但其实也是机会不是吗?你至少比只会JavaScript开发的人更了解原生,有更多的经验,我们不妨抛弃以前的语言偏见(或者看不到其他语言的短见),来体验一把JavaScript带给我们的全新感受。

JavaScript的历史

1995年面市的JavaScript其实和Java关系并不大(除了借鉴一些语法样式),在当时有可能只是做为一种营销手段,所以才效仿当时已颇为有名的Java,将名子由最初的LiveScript改为JavaScript。稍微了解一下JavaScript的语言规则就会发现,JavaScript和Python或者Ruby这样的轻型脚本语言,或者Lisp之类的以函数作为主体的程序设计语言很相似。

JavaScript简史:

网景公司和微软公司都在开分各自的JavaScript的实现版,为了防止因两家公司独自开发而导致JavaScript分裂及其他的一些问题,网景公司提出了名为Ecma Interational的JavaScript标准化组织,将语言规则的制定权交给了中立的标准化组织。

所以,现在你接触的JavaScript是一种符合ECMAScript标准的程序设计语言,虽说某些时候JavaScript会是ECMAScript标准的超集,往往很多功能是先由JavaScript实现最后才会被ECMAScript定为标准。即是说ECMAScript的标准有很多个实现版本,如微软的IE、Google的Chrome都有各自的JavaScript引擎,兼容老板本的IE也是一个让开发头痛的问题。

目前主流的流览器都支持ECMAScript 5版(到了2012年底,所有主要浏览器都支持ECMAScript 5.1版的全部功能),2015年6月,ECMAScript 6正式发布,并且更名为“ECMAScript 2015”。ECMAScript 6版加入了些新的元素,不过浏览器还不完全支持ECMAScript 6的语法,所以之后你会遇到一个转换程序帮助你把E6的代码转换成E5的。

太多的细节现在也不需要知道得太多,我们只要有一个概念:ECMAScript是规范,而每个浏览器产商都有各自的实现。

JavaScript的特点

JavaScript程序设计语言有如下几个特点:

  • 解释型语言
  • 类似于C和Java的语法结构
  • 动态语言
  • 基于原型的面向对象
  • 字面量的表现能力
  • 函数式编程

稍后的章节我们会解释这几个特点。2009年,Node.js项目诞生,它标志着JavaScript可以用于服务器端编程,从此网站的前端和后端可以使用同一种语言开发。

在Node.js把JavaScript的领域扩展到后端之前,人们的印象中JavaScript大多数用在客户端(浏览器),所以JavaScript和DOM感觉密不可分,但实际上DOM对于客户端JavaScript来说,仅仅是一个宿主对象。JavaScript中对于不同的运行环境,有着不同的内置宿主对象,浏览器客户端JavaScript的全局对象被称作window对象。在启动中,JavaScript从宿主环境获取的对象树被称为宿主对象。

DOM(Document Object Model) 是一套对文档内容进行抽象和概念化的方法、是对外提供的操纵浏览器内容的API。JavaScript对网页进行的所有操作都是通过DOM进行的、用于改变浏览器呈现的内容与方式。

在Android应用中或者说在传统的编程习惯中,我们喜欢找到main函数(程序的入口),这样我们才能知道代码从哪里开始执行。在Android应用中,一个APK的应该是以Application.onCreate做为起点。

在Android的Application中,虽然还有attachBaseContext会更早被调用,但我们一般还是以onCreate做为自己应用的起点。

而JavaScript代码的执行起点在哪里呢?

JavaScript是一种描述型脚本语言,它不同于java这种编译性语言,它不需要进行编译成中间语言,而是由浏览器(或者执行引擎)进行动态地解析与执行。而你熟知的Android应用是会被编译成字节码(dex),最后由DVM虚拟机执行dex。

JavaScript的代码块被读取解析时,执行顺序是至上而下的。引擎是从JavaScript文件的顶部由上到下逐条执行语句,直到文件尾部执行完每一条代码。没有我们所说的main入口。而且一个脚本定义的函数或全局变量,后面加载的脚本也可以调用,这也是一个让静态语言习惯的开发不适应的地方。

环境准备

环境其实很容易准备,一是直接利用浏览器客户端,建议用Google的Chrome,IE有些版本的话问题比较多。所以我们需要写一个Html解本来引入我们的JavaScript代码,然后在浏览器打开这个Html文件即可运行我们的代码。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>学习JavaScript</title>
</head>
<body>
<h1>学习JavaScript</h1>
<p>
  Android开发学习JavaScript系列(简书:goeasyway)
</p>
<script>
  console.log('Hello World!');
</script>
</body>
</html>

用Chrome浏览器打开这个文件,在Console选项可以看到console.log的执行结果:

Mac上打开 Chrome DevTools ,并聚焦在 console 上的快捷键为:Cmd + Opt + J。
也可以在任意的页面元素中鼠标右键,选择审查元素(Inspect Element)进入。

二是利用Node.js(安装请点击:https://nodejs.org ),写JavaScript代码后通过“node xxx.js”查看结果。如testjs.js文件内容如下:

console.log('Hello World!');

输入如下命令可以看到结果。

node testjs.js

当然还有其他的方式来测试代码,如一些在线测试JavaScript的网站。不过对于我们之后的学习来说,有这两种方式已经足够了。至于IDE工具大家可选择自己喜欢的,如Sublime、Webstorm或者其他的一些文本编辑器都可以。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容