前端--关于javascript基础
首先javascript不是浏览器的附属品,只能说它大多数的运行环境是在浏览器中的,但又不仅仅局限于浏览器中。它是一门真正的程序设计语言,在这方面它和java、c、c++、c#是等同的,只不过它不直接和操作系统打交道,这也是它相比于其他语言有些特殊和看似简单的地方。这种问题的根源在于它的翻译器,因为一个语言的特性怎么样全在于它的编译器或者解释器怎么样,用字符书写的符合各种语法规则的字符串都是翻译器内在要求的外在表现。单纯的js解释器的特点就是它自己本身的能力有点小以至于除了只能仅仅是运行一遍源文件外产生不了任何副作用和输出,像ajax调用网络通信、动态改变样式、动态改变标签等这些都不是js解释器本身自己去做到的,而是js解释器通过调用与浏览器之间的一个中间层来完成的。所以单纯的纯粹的js解释器的存在似乎没有什么意义,它总是要面向一个宿主环境才有实际作用,它总是要运行在一个比操作系统更高级的平台中,正因为如此,javascript才说是具有跨平台性的。
有的地方讲到javascript由三部分组成:ECMAScript、DOM、BOM。个人认为这么划分是有失偏颇的,这样划分组成部分就把js完全限制在了浏览器中,感觉js就是浏览器的一部分并只能是浏览器的一部分,所以要先弄清楚javascript与ECMAScript、DOM、BOM之间的关系。ECMASsript、BOM、DOM这三者的性质是相同的,它们都是某一种规范,一种标准。ECMAScript规定了变量、表达式、语句、函数、对象等语法规则和特性,javascript则是对这些规则的实现。DOM和BOM就是为了html文档和浏览器的操作方便,把浏览器暴露给js解释器的接口做了同一的规范,这些规范的表现就是在不同的浏览器中可以用js调用相同的API函数来做相同的事情。因此javascript作为一门独立的程序设语言,ECMAScript已经涵盖了它的语法规则和特性,这就已经足够了。DOM和BOM并不属于javascript,它俩只是在特定的宿主环境中对js的一种拓展补充。
javascript的词法结构比较简单(词法结构就是规定了标识符什么样,怎么写注释,还有语句之间如何间隔),就是它是一门区分大小写的语言;注释用//两道斜杠或者放在/*和 */之间;它的标识符要用数字、字母、下滑下、$符号组成,并且不能和保留字和关键字冲突,开头不能是数字;空格、换行可以随便加,程序都会做恰当的忽略,这样可以写自己喜欢的布局。分号也是可选的,没有的话在一行的结尾会自动添加分号。词法结构只是告诉了我们js源程序文件应该怎么写,我们还应该知道都可以写些什么,而可以写些什么就要看程序设计语言能提供什么。一般一个程序设计语言最基本的特征就是能够提供多种数据类型,数据类型就是翻译器和人的接口,根据机器的特点和人类的认知规律抽象出来的可以用于解决实际问题的类型概念,这样也便于内存的管理并约束人的使用行为提高准确性。
在js程序设计语言中数据类型可以分为两类:原始类型和对象类型。原始类型中包括数字、字符、布尔、null、undefined,其中null和undefined的取值范围就一个,那就是null和undefined这两个关键字。对象类型一般情况下就是属性的集合,但会有特殊的对象,比如说数组array和函数function。要使用这些类型就必须按照语法的要求用特定的记号把这些类型值表示出来,这种本身就表示或者返回某个类型值的写法就叫表达式,表达式也是一种计算。在javascript中,一共有6中最基本的表达式,它们分别是:
- 原始表达式 这种表达式一般就是直接量或者变量等的表示
- 对象和数组初始化表达式 这也可以说是对象直接量和数组直接量,例如 {x:1,y:4} [1,2,3]
- 函数定义表达式 同样的这是算是函数直接量,语法就是function(参数){代码段}
- 属性访问表达式 属性访问有两种写法一是点.加标识符的写法 例如 obj.identifier;二是中括号[]加里面的表达式写法,例如arr[1];j第一种只适用于对象,第二种适用于数组和对象。
- 调用表达式 这是一种特殊的表达式,只适用于函数或者方法,用来执行一块代码段并返回一个值。函数和方法本质上都是对象,只不过这个对象有一段附属的相关联的可执行代码块,并且这段代码块可以用对象加()运算符来执行。
- 对象创建表达式 这是通过构造函数创建对象的一种方法,这个表达式返回一个对象。
以上6中表达式可以通过和运算符结合形成更复杂的表达式,运算符可以操作一个或者多个表达式,并可以产生或者不产生副作用来返回一个值。在js中有50个左右的运算符,运算符一般是符号像+、-,但有些也是关键字,像instanceof、typeof等,这些运算符可以用于算数表达式、比较表达式、逻辑表达式、赋值表达式等。表达式总会产生一个返回值,而没有返回值只产生副作用的写法就是语句了。js中比较常见的语句也是有7种的,它们分别是:
- 表达式语句 这是一种特殊的语句,特殊在它是表达式的,它有个返回值,但它要是以分号结尾的。
- 复杂语句 这种语句写法就是用一个大括号{}把多个语句括起来
- 空语句 空语句就是什么都没有只有个一分号。
- 声明语句 这是用来声明变量或者函数的
- 条件语句 存在决策点或者分支会用到
- 循环语句 代码存在回路的时候可以用到 循环语句有多种写法 for、do/while、for/in等
- try/catch/finally 这些语句块都要使用大括号,是js的异常处理机制
最后通过对这些语句的构造就可以写出正确的javascript程序了。
前端--关于javascript基础的更多相关文章
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
- 第三篇:web之前端之JavaScript基础
前端之JavaScript基础 前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript ...
- 前端见微知著JavaScript基础篇:你所不知道的apply, call 和 bind
在我的职业生涯中,很早就已经开始使用JavaScript进行项目开发了.但是一直都是把重心放在了后端开发方面,前端方面鲜有涉及.所以造成的一个现象就是:目前的前端知识水平,应付一般的项目已然是足够的, ...
- 谷哥的小弟学前端(11)——JavaScript基础知识(2)
探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 具体解释Android主流框架不可或缺的基石 站在源代码的肩膀上全解Scroller工作机制 Android多分辨率适 ...
- 前端-JavaScript2-1——JavaScript基础复习及上次作业答案
昨天讲解的JS是编程最最简单的一些基础知识,复习一下: JavaScript书写环境,<script>标签 1 <script type=”text/javascript”&g ...
- 谷哥的小弟学前端(10)——JavaScript基础知识(1)
探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 具体解释Android主流框架不可或缺的基石 站在源代码的肩膀上全解Scroller工作机制 Android多分辨率适 ...
- 前端之JavaScript基础及使用方法
JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECM ...
- 前端见微知著JavaScript基础篇:this or that ?
上节,我们提到了this关键字的问题,并且追加了一句很有意义的话:谁调用我,我指向谁.的确,在javascript中,在默认情况下,this会指向一个已经初始化的window对象.所以你不论有多少全局 ...
- Web前端开发JavaScript基础
JavaScript 一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它的解释器被称为JavaScript引擎,是浏览器的一部分,并且是被广泛用于客户端的脚本语言,JavaS ...
随机推荐
- jQuery之.html()和.text()区别
.html()//获取标签和内容 .text()//只获取内容
- 在Fedora20上安装Oracle 12c
本文将引导大家在Fedora20的环境下成功安装Oracle12c. 安装前的准备 编辑/etc/hosts文件,添加本机名称 编辑/etc/selinux/config文件 编辑/etc/redha ...
- bug调试大全
http://www.jianshu.com/p/9fc9fd89bfee http://www.cocoachina.com/ios/20150929/13598.html
- windows下配置svn的https访问
svn是一个功能强大的代码版本管理系统,可以将服务端安装在linux.unix以及windows下.svn通常采用http方式进行代码提交与下载.由于密码采用明文传输,因此存在泄密的风险.若采用htt ...
- vc远程调试启动进程(非attach)
被调试端设置同attach进程方式的远程调试 代码端,需要在[Project] [Properties] [Configuration Properties] [Debugging].将Debugge ...
- mysql索引之普通索引
1,普通索引的创建 普通索引可以在建表的时候创建 sql : create table temp2(id int(10) not null auto_increment ,title varchar( ...
- web worker使用
使用postMessage()方法传递信息.来自Worker的数据保存在event.data中.通过message和error事件与页面通信. <script> var data = [4 ...
- 【Nutch2.2.1源代码分析之5】索引的基本流程
一.各个主要类之间的关系 SolrIndexerJob extends IndexerJob 1.IndexerJob:主要完成 2.SolrIndexerJob:主要完成 3.IndexUtil:主 ...
- BufferedInputStream实现原理分析
原文地址:http://blog.sina.com.cn/s/blog_67f995260101huxz.html BufferedInputStream是一个带有缓冲区的输入流,通常使用它可以提高我 ...
- MVC过滤器详解和示例
原文 http://blog.csdn.net/ankeyuan/article/details/29624005 MVC过滤器一共分为四个:ActionFilter(方法过滤器),ResultFi ...