目录
1.JavaScript历史背景介绍
布兰登·艾奇(Brendan Eich,1961年~)1995年在网景公司,用了十天左右的时间就发明了JavaScript。一开始JavaScript叫做LiveScript,但是由于当时Java这个语言特别火,为了蹭热点,就改名为JavaScript。同时期还有其他的网页语言,比如VBScript、JScript等等,但是后来都被JavaScript完败,所以现在的浏览器中,只运行一种脚本语言就是JavaScript。
2.JavaScript和ECMAScript的关系
ECMAScript是一种由ECMA也就是前身为欧洲计算机制造商协会,制定的标准。JavaScript是由公司开发而成的,公司开发而成的东西在某些情况是有一些问题的,不便于其他的公司拓展和使用。所以欧洲这个ECMA的组织,牵头制定JavaScript的标准,取名为ECMAScript。简单来说ECMAScript不是一门语言,而是一个标准。符合这个标准的比较常见的有:JavaScript、Action Script(Flash中用的语言)。
3.JavaScript的概念
JavaScript是一种轻量级的、基于对象和事件驱动的、跨平台的客户端脚本语言。
(1)轻量级:JS不需要配置特定的运行环境,只要有浏览器就行
(2)基于对象:在程序中,对象是由“属性”和“方法”构成。属性指静态的东西,只是值不一样;“对象”有很多方法,这些方法规定了对象应该干什么事、可以干什么事
(3)事件驱动:简单来说就是在js中的我们对网页操作的一些行为,比如鼠标的点击,移入移出,键盘敲击等。这些行为或动作我们统称为事件,也就是事件来驱动我做这些事情。把用户一些列的在网页中的操作称之为事件
(4)跨平台:JS程序可以在多个平台下运行,如:windows、Linux、mac、IOS等。
(5)客户端脚本程序:JS只能在客户端的浏览器来运行,不能在服务器端运行(node.js)。浏览器是一个翻译器,可以翻译三种代码:HTML代码、CSS代码,JavaScript代码。
(6)脚本:依据一定的格式编写的可执行文件,比如:第一步做什么第二步做什么,也相当于是一个“大纲”。
4.JavaScript的组成
(1)核心是ECMAScript:它定义了这门语言的基础,描述了该语言的语法和基本对象。 到目前最新的版本是ES13
(2)文档对象模型(DOM:Document Object Model):DOM描述了处理网页内容的方法和接口。
(3)浏览器对象模型(BOM:Browser Object Model):BOM描述了与浏览器进行交互的方法和接口
5.关于script标签
<script></script> 标签用于定义客户端脚本。它既可以包含脚本语句,也可以通过src属性指定外部脚本文件
language:用来指定<script>标签中的脚本类型,即javascript。已废弃,大多数浏览器已经忽略它了,所以不要再使用。
type:它也是用来指定<script>标签中的脚本类型,即text/javascript。它也是type的默认值,所以可以忽略指定。
src:指定外部的脚本文件。如果指定该属性,script标签包含的JS脚本不会执行。
script标签可以放在页面中的任何位置,但是我们一般放在head和body中。
6.JS注释
注释可用于提高代码的可读性。Javascript不会执行注释,用户也不会看到注释,注释只是方便开发者更好的理解JS代码。
单行注释:以 // 开头。
多行注释:以 /* 开头,以 */ 结尾
7.常用的客户端输出方法
(1)document.write(str):在网页中输出信息,支持标记的解析
document.write('<h1>hello 王成</h1>')
(2)console.log():在控制台输出信息
console.log('基尼太美')
(3)alert():弹窗提示信息,只能确定
alert('亲,你输入的用户名不正确?')
(4) prompt(参数一,参数二):提示词信息,带有一个输入框,可以确定和取消参数1表示的是输入框外层的提示信息, 参数2表示的是输入框里面的提示信息,跟表单的value类似
prompt('请输入一个数字?', '数字范围0---6')
(5)print():打印方法,通过浏览器调用打印机
print('请打印')
8.变量
(1)概念:变量是存储信息的容器。
在内存中开辟一块指定字节的空间,用于存储数据,随着程序的运行,数据发生变化,所以称为变量。
(2)变量的声明与赋值
声明:关键字 变量名
赋值:变量名 = 值
变量有三种定义方式:
//先声明再赋值
var a = 'abc'
//声明与赋值一起
var b = 'bcd'
//一次声明多个变量
var c,d,e
c = 'cde'
d = 'def'
e = 'efg'
(3)变量的命名
变量名可以包含字母、数字、下划线、美元符号$
命名规则:a.变量名不能以数字开头,可以以字母或下划线开头
b.变量名不能是系统关键字
c.区分大小写
命名形式:a.驼峰式命名:第一个单词全是小写,后面的每个单词首字母大写
b.下划线式命名:所有单词全小写,中间用下划线连
c、匈牙利命名法(Hungarian):在变量名最前面添加相应小写字母来标识变量的类型,后面的单词首字母大写
注意:相同名称的变量,后面的覆盖前面的
(4)变量存储
变量把数据存储在内存里,变量存储在运行内存里,不再使用时,会在内存空间里进行销毁(自动销毁)
9.数据类型
(1)基本数据类型:number--数值,string--字符串,boolean--布尔,undefined--未定义,null--空
基本数据类型很显著的特点:一个变量名只能存一个值。
(2)引用数据类型:function--函数,array--数组,object--对象
符合数据类型很显著的特点:一个变量名能存多个值。
通过typeof来查看变量的类型
关于undefined和null问题:
typeof undefined 为undefined,而typeof null 为object
undefined和null很类似,未定义和空它们的意义非常接近 在js设计之初,借鉴了大量其他语言(例如:c、java)的语法特性,其他语言里面存在null类型,因此它也设计了null类型,结果在使用的过程中发现这个类型实在特殊,因为把划分到基本数据类型的,结果显示的又是引用数据类型,会导致类型混淆问题,因此在null类型的基础上衍生出了一个新的类型undefined
10.运算符
运算时只能进行同类型运算,如果类型不同,将进行类型转换
(1)算术运算符:+、—、*、/、%、++、--;
(2)赋值运算符:=、+=、-=、*=、/=
(3)比较运算符:>、<、>=、<=、==、!=、===
关于++a与a++:(--a与a--同理)
++a是先加再运算,a++是先运算再加,但二者若是单独拿出来时,都只的是将a的值加1,但在运算的时候有先后之分
var a = 1
console.log(a++)//1
var b = 1
console.log(++b)//2
var c = 1
console.log(c++ + ++c)//1 + 3 = 4