前端学习 之 JavaScript基础(一)

一. JavaScript简介

1. JavaScript的历史背景介绍

1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。比如,如果网页上有一栏"用户名"要求填写,浏览器就无法判断访问者是否真的填写了,只有让服务器端判断。如果没有填写,服务器端就返回错误,要求用户重新填写,这太浪费时间和服务器资源了。

       因此,网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。工程师Brendan Eich负责开发这种新语言。他觉得,没必要设计得很复杂,这种语言只要能够完成一些简单操作就够了,比如判断用户有没有填写表单。

       1994年正是面向对象编程(object-oriented programming)最兴盛的时期,C++是当时最流行的语言,而Java语言的1.0版即将于第二年推出,Sun公司正在大肆造势。

       Brendan Eich无疑受到了影响,Javascript里面所有的数据类型都是对象(object),这一点与Java非常相似。但是,他随即就遇到了一个难题,到底要不要设计"继承"机制呢?

如果真的是一种简易的脚本语言,其实不需要有"继承"机制。但是,Javascript里面都是对象,必须有一种机制,将所有对象联系起来。所以,Brendan Eich最后还是设计了"继承"。

但是,他不打算引入"类"(class)的概念,因为一旦有了"类",Javascript就是一种完整的面向对象编程语言了,这好像有点太正式了,而且增加了初学者的入门难度。

2.ECMAScript和JavaScript的关系

1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。

该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。二是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。

因此ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。

 

3.ECMAScript的历史

1ECMAScript简介

ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。

(2)ECMAScript历史发展

1998年6月,ECMAScript 2.0版发布。

1999年12月,ECMAScript 3.0版发布,成为JavaScript的通行标准,得到了广泛支持。

2007年10月,ECMAScript 4.0版草案发布,对3.0版做了大幅升级,预计次年8月发布正式版本。草案发布后,由于4.0版的目标过于激进,各方对于是否通过这个标准,发生了严重分歧。以Yahoo、Microsoft、Google为首的大公司,反对JavaScript的大幅升级,主张小幅改动;以JavaScript创造者Brendan Eich为首的Mozilla公司,则坚持当前的草案。

2008年7月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激进,ECMA开会决定,中止ECMAScript 4.0的开发,将其中涉及现有功能改善的一小部分,发布为ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版本,由于会议的气氛,该版本的项目代号起名为Harmony(和谐)。会后不久,ECMAScript 3.1就改名为ECMAScript 5。

2009年12月,ECMAScript 5.0版正式发布。Harmony项目则一分为二,一些较为可行的设想定名为JavaScript.next继续开发,后来演变成ECMAScript 6;一些不是很成熟的设想,则被视为JavaScript.next.next,在更远的将来再考虑推出。

2011年6月,ECMAscript 5.1版发布,并且成为ISO国际标准(ISO/IEC 16262:2011)。

2013年3月,ECMAScript 6草案冻结,不再添加新功能。新的功能设想将被放到ECMAScript 7。

2013年12月,ECMAScript 6草案发布。然后是12个月的讨论期,听取各方反馈。

2015年6月17日,ECMAScript 6发布正式版本,即ECMAScript 2015。

ECMA的第39号技术专家委员会(Technical Committee 39,简称TC39)负责制订ECMAScript标准,成员包括Microsoft、Mozilla、Google等大公司。TC39的总体考虑是,ES5与ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成。

注:ES6就是指ECMAScript 6。

尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的JavaScript 实现是由以下 3 个不同部分组成的:

核心(ECMAScript)

文档对象模型(DOM) Document object model (整合js,css,html)

浏览器对象模型(BOM) Broswer object model(整合js和浏览器)

简单地说,ECMAScript 描述了JavaScript语言本身的相关内容。

4.JavaScript特性与优点

JavaScript 是脚本语言

JavaScript 是一种轻量级的编程语言。

JavaScript 是可插入 HTML 页面的编程代码。

JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

JavaScript 很容易学习。

5. JavaScript的组成

JavaScript基础分为三个部分:

ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。

DOM:操作网页上的元素的API。比如让盒子移动、变色、轮播图等。

BOM:操作浏览器部分功能的API。比如让浏览器自动滚动。

二. 初识JavaScript代码

1.JavaScript引入方式

(1)Script标签内写代码

在head标签里面可以写,在body标签里面也可以写,到head标签里面和放到body标签里面是有区别的

<script>

  // 在这里写你的JS代码

 //console.log('骑士计划!') #f12建打开浏览器的调试窗口,然后在console这个调试台就能看到这个内容了

</script>

(2)引入额外的JS文件

以下是将这一行放在html文件的head部分。对于下面的语句现在type="text/javascript"这个类型也可以去除不写。

<script type="text/javascript" src="myscript.js"></script>

2. JavaScript的语法规则

(1)语法规则

1.JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头。

2.声明变量使用 var 变量名; 的格式来进行声明

所有的符号,都是英语的。比如括号、引号、分号。

(2)注释(注释是代码之母)

// 这是单行注释

/*

这是

多行注释

*/

(3)结束符

JavaScript中的语句要以分号(;)为结束符。也就是说和缩进没关系了

3.JavaScript在网页中输出信息的写法

(4)弹出警告框:alert语句

语法:alert("");

<script type="text/javascript">

    alert("这是一个警告弹出框")

</script>

运行结果:

(2)控制台输出:console.log("")

console.log("") 表示在控制台中输出。console表示“控制台”,log表示“输出”。

控制台在Chrome浏览器的F12中。控制台是工程师、程序员调试程序的地方。程序员经常使用这条语句输出一些东西,来测试程序是否正确。

例:

<script>

     console.log("这个控制台输出");

</script>

运行结果为:

在浏览器的Console里面输出代码中输出的语句内容。

4.用户输入语句

prompt() 就是专门用来弹出能够让用户输入的对话框。

代码如下:

<script type="text/javascript">

    var a = prompt("今日天气如何?");

    console.log(a);

</script>

上方代码中,用户输入的内容,将被传递到变量 a 里面。

效果如下:

首先弹框让其输入内容:

然后再console中输出相应的输入内容:

prompt()语句中,用户不管输入什么内容,都是字符串。

alert和prompt的区别:

alert("这个内容会弹框");                //直接使用,不需要变量

var a = prompt("请输入内容");   // 必须用一个变量,来接收用户输入的值

5.直接量:数字和字符串

“直接量”即常量,也称为“字面量”。看见什么,它就是什么。

简单的直接量有2种:数字、字符串。

(1)数值的直接量的表达非常简单,写上去就行了,不需要任何的符号。例如:

alert(886);  //886是数字,所以不需要加引号。

(2)字符串也很简单,但一定要加上引号。可以是单词、句子等。例如:

alert("Hello");

alert("Hello world");

ES6新增const用来声明常量。一旦声明,其值就不能改变。这个东西就是为了定义一个固定的常量,供大家使用,这个常量不会改变。

const PI = 3.1415;

PI // 3.1415

PI = 3

// TypeError: "PI" is read-only,如果将其改变会出错

6.变量的定义和赋值

定义变量:var就是一个关键字,用来定义变量。所谓关键字,就是有特殊功能的小词语。关键字后面一定要有空格隔开。

变量的赋值:等号表示赋值,将等号右边的值,赋给左边的变量。

变量名:我们可以给变量任意的取名字。

PS:在JavaScript中,永远都是用var来定义变量,这和C、Java等语言不同

变量要先定义,才能使用。比如,我们不设置变量,直接输出:

<script type="text/javascript">

    console.log(a);

</script>

会报错:

正确写法:

var a;   // 定义

a = 100;  //赋值

console.log(a);  //输出100

也可以这样写:

var a = 100;    //定义,并且赋值100

console.log(a);  //输出100

ES6新增了let命令,用于声明变量。其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效。例如:for循环的计数器就很适合使用let命令。

如:

for (let i=0;i<arr.length;i++){...}

7. 变量的命名规范

 

变量名有命名规范:只能由英语字母、数字、下划线、$(美元符)构成,且不能以数字开头,并且不能是JavaScript保留字。

下列的单词,叫做保留字,就是说不允许当做变量名,类似于python中的关键字:

abstract

booleanbytechar

class

const

debuggerdouble

enum

export

extends

finalfloat

goto

implements

importint

interfacelong

native

package

private

protected

publicshort

static

super

synchronized

throws

transient

volatile

大写字母是可以使用的,并且大小写敏感。也就是说A和a是两个变量。

var A = 250;    //变量1

var a = 888;    //变量2

三.JavaScript数据类型

数据类型包括:基本数据类型和引用数据类型

基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。

当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值。

1.基本数据类型

在讲数据类型之前,我们要学习一个函数 typeof 表示“获取变量的类型”,语法为:

typeof 变量名称

(1)number数值类型

例:

var a = 123;

//typeof 检查当前变量是什么数据类型

console.log(typeof a)

还有一种NaN,表示不是一个数字(Not a Number),也就是说是一个值,但不是数字。

在JavaScript中,只要是数,就是数值型(number)的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是number类型的。

(2) string字符串类型

var a = "abcde";

var b = "路飞";

var c = "123123";

var d = "哈哈哈哈哈";

var e = "";     //空字符串

console.log("检测是string类型")

console.log("a:"+typeof a);

console.log("b:"+typeof b);

console.log("c:"+typeof c);

console.log("d:"+typeof d);

console.log("e:"+typeof e);

(3) boolean布尔类型

console.log("检测是bloolean类型:")

var b1 = false;

console.log("b1:"+typeof b1)

var b2= true;

console.log("b2:"+typeof b2)

在JavaScript中,false类型6种

1.undefined

2.‘ ’ //空字符串

3.null

4.false

5.NaN //值NaN是一个数值,表示一个不能产生正常结果的运算结果,它不能等任何值,包括它自己

6.数字0 或0.0

(4) null空对象类型

console.log("检测是null空对象类型")

var c1 = null;//空对象  object

console.log("c1:"+c1)

(5)undefined未定义类型

console.log("检测是undefined未定义类型")

var d1;

//表示变量未定义

console.log("d1:"+typeof d1)

2. 引用数据类型

Function

Object

Array

String

Date

后面文档将详细介绍。

待续....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值