前端--关于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 ...
随机推荐
- 转载:android——eclipse如何去除Ctrl+shift+R组合键查找到的.class文件
转载自:http://blog.csdn.net/virgilli/article/details/22500409 AS里面的build文件下一堆的.class 文件,当你要定位资源文件的时候,有些 ...
- JS高级程序设计学习笔记之Date类型
日期对象的创建:var now =new Date(),不传递参数时,对象自动获取当前时间.(若要创建特定日期与时间的对象,必须传入该日期距离1970/1/1零点的毫秒数). Date.parse() ...
- ASP.net button类控件click事件中传递参数
单击Button会同时触发这两个事件,但先执行Click,后执行Command,在button控件中加上参数属性 CommandArgument='' 在click响应函数中可以用以下代码获得传递的参 ...
- OpenGL ES 2.0 混合
混合技术 混合技术就是将俩个片元调和,主要用于将通过各项测试准备进入帧缓冲的片元(源片元)与原有片元按照设定的比例加权计算出最终片元的颜色值. OpenGL ES 2.0中是通过设置混合因子来指定两个 ...
- BZOJ 3277 串 (广义后缀自动机)
3277: 串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 309 Solved: 118 [Submit][Status][Discuss] De ...
- volatile举列说明const
1.即使本程序中虽然不改变这种类型的值,但别的比如中断程序可能会改变这个值,加上volatile,编译器不优化,每次都重新访问这个值做判断 2.如 unsigned char flag = 1; in ...
- linux for循环
一定要记得写后面的分号:http://www.runoob.com/linux/linux-shell-variable.html 这个页面的课程的循环教程是有问题的 for color in yel ...
- 距离顶部估计像素,显示div!
<html> <head> <title>slide</title> <style type="text/css"> # ...
- oracle 数据库用户登录相关
oracle 数据库的安装 : 一: 安装的时候可以设定解锁的用户 一般默认是解锁soctt用户和hr用户 : oracle的超级用户是sysdba这个用户在安装的时候也可以设置密码,一 般自己使 ...
- table行转列
table行转列 摘要 在使用ews调用exhange的收件箱的并在h5页面显示邮件详情的时候,因为返回的每封邮件的内容都是htmlbody,没有textbody.每封邮件又没什么规律,用正则表达式来 ...