布兰登-艾奇(Brendan Eich, 1961~)
艾奇在1995年10天内完成JavaScript设计
网景公司最初命名为LiveScript,后来在与Sun合作之后将其改名为JavaScript
JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script是脚本的意思)
脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行
现在也可以基于Node.js技术进行服务器端编程
HTML/CSS标记语言 – 描述类语言
JS脚本语言 – 编程类语言
浏览器分为两部分,渲染引擎和JS引擎
浏览器本身并不会执行JS代码,而是通过内置JavaScript引擎(解释器)来执行JS代码。JS引擎执行代码时逐行解释每一句源码(转换成机器语言),然后由计算机去执行,所以JavaScript语言归于脚本语言,会逐行解释执行。
ECMAScript是由ECMA国际 (原欧洲计算机制造商协会)进行标准化的一门编程语言,这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMAScript语言的实现和扩展。
ECMAScript:ECMAScript规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵循的一套JS语法工业标准。
文档对象模型(Document Object Model, 简称DOM),是W3C组织推荐的处理可扩展标记语言的标准编程接口。通过DOM提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)。
BOM(Browser Object Model, 简称BOM)是指浏览器对象模型,它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,比如弹出框、控制浏览器跳转、获取分辨率等。
JS有3种书写位置,分别为行内、内嵌和外部。
<input type="button" value="try" oncilck="alert('hello world')" />
<script>
alter('hello world');
</script>
<script src="js_test.js"></script>
<script>
//alert('hello world'); 单行注释
</script>
<script>
/*
alert('hello world');
alert('hello world');
alert('hello world'); 多行注释
*/
</script>
为了方便信息的输入输出,JS中提供了一些输入输出语句,其常用的语句如下:
方法 | 说明 | 归属 |
---|---|---|
alert(msg) | 浏览器弹出警告框 | 浏览器 |
console.log(msg) | 浏览器控制台打印输出信息 | 浏览器 |
prompt(info) | 浏览器弹出输入框,用户可以输入 | 浏览器 |
变量是用于存放数据的容器。我们通过变量名获取数据,甚至修改数据。
本质:变量是程序在内存中申请的一块用来存放数据的空间。
变量在使用时分为两步:1.声明变量 2.赋值
声明变量
//声明变量
var age;//声明一个名称为age的变量
赋值
age = 10; //给age这个变量赋值为10
变量的初始化
var age = 18;//声明变量同时赋值为18
声明一个变量并赋值,称之为变量的初始化。
更新变量
一个变量被重新赋值后,它原有的值会覆盖,变量值将以最后一次赋的值为准。
同时声明多个变量时,只需要写一个var
,多个变量名之间用 ,
隔开
var age = 10, name = 'lemon', sex = 'man';
声明变量特殊情况
情况 | 说明 | 结果 |
---|---|---|
var age;console.log(age); | 只声明 不赋值 | undefined |
console.log(age); | 不声明 不赋值 直接使用 | 报错 |
age = 10;console.log(age); | 不声明 只赋值 | 10 |
为什么需要数据类型
在计算机中,不用的数据所需占用的存储空间是不同的,为了便于把数据分成内存大小不用的数据,充分利用存储空间,于是定义了不同的数据类型。简单来说,数据类型就是数据的类别型号。
变量的数据类型
变量是用来存储值的容器,具有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。JavaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
var age = 10; //数值类型
var name = 'lemon' //字符类型
在代码运行时,变量的数据类型是由JS引擎根据 =
右边变量值的数据类型来判断的,运行完毕后,变量就确定了数据类型。
JavaScript拥有动态类型,同时也意味着相同的变量可用作不同的类型:
var x = 10; //数值
var x = 'lemon' //字符
数据类型的分类
JS把数据类型分为两类:
JavaScript中的简单数据类型及其说明如下:
简单数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型,包含 整型值和浮点型值,如21、0.21 | 0 |
Boolean | 布尔值类型,如 true、false,等价于1和0 | false |
String | 字符串类型 | “” |
Undefined | var a;声明了变量a但未赋值 , a = undefined | undefined |
Null | 空值 | null |
JavaScript数字类型既可以用来保存整数值,也可以保存小数(浮点数)。
var age = 21; //整数
var Age = 21.3747; //浮点数
数字型进制
//八进制 在数字前加 0 表示八进制
var num = 010; // 010 -> 8
//十六进制 在数字前加 0x 表示十六进制
var num = 0xa; // 0xa -> 10
数字型范围
JavaScript中数值的最大值和最小值
alert(Number.MAX_VALUE); //1.7976931348623157e+308
alert(Number.MIN_VALUE); //5e-324
数字型三个特殊值
alert(Infinity);
alert(-Infinity);
alert(NaN);
isNaN() 判断是否为数字
console.log(isNaN(12));//false 是数字返回 false
console.log(isNaN('lemon')) //true 非数值为true
字符串型为引号中的任意文本,其语法为双引号""
和单引号''
字符串引号嵌套
js可以用单引号嵌套双引号,反之亦可,不能一单一双使用
var strMsg = 'i love "u"';
var strMsg1 = "i love 'u'";
字符串转义字符
转义字符以\
开头,常用如下:
转义符 | 解释说明 |
---|---|
\n | 换行符 |
\ | 斜杠 |
’ | 单引号 |
" | 双引号 |
\t | tab |
\b | 空格 |
字符串长度
字符串是由若干字符串组成的,字符的数量就是字符串的长度。通过字符串的length
属性可以获取整个字符串的长度
var name = 'lemon';
console.log(name.length); // 5
字符串拼接
多个字符串之间可以使用+
进行拼接,其拼接方式为 字符串 + 任意类型 = 新字符串
拼接前会将所有内容转化为字符串,在进行拼接
// string + string
alert('hello ' + 'world'); // hello world
// numberString
alert('5' + '20'); // 520
// numberString + number
alert('5' + 21); // 521
undefined 与数字相加 结果为 NaN
typeof用来获取检测变量的数据类型
var num = 10;
console.log(typeof num); //number
console.log(typeof 'lemon'); //string
console.log(typeof true); //boolean
把一种数据类型的变量转换成另外一种数据类型。
toString()
var num = 1;
alert(num.toString());
String()强制转化
var num = 1;
alert(String(num));
+
拼接字符串
以数字开头的字符串
Boolean()函数
代表空、否定的值会转化为false,如 ’‘、0、NaN、null、undefined
其余值均为true
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余(模) |
++ | 递增 |
– | 递减 |
< | 小于号 |
> | 大于号 |
>= | 大于等于号 |
<= | 小于等于号 |
==(了解) | 判等号(会转型) |
!= | 不等号 |
=== ! == | 全等 要求值 和 数据类型都一致 |
&& | 逻辑与 |
|| | 逻辑或 |
! | 逻辑非 |
= | 直接赋值 |
+=、-= | 加等、减等 |
*=、/=、%= |
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 括号 | () |
2 | 一元运算符 | ++ – ! |
3 | 算术运算符 | 先* / % 后+ - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === ! == |
6 | 逻辑运算符 | 先&& 后 || |
7 | 赋值运算符 | = |
逗号运算符 | , |
在一个程序执行的过程中,各条代码的执行顺序对程序的结果有直接影响。
简单理解,流程控制就是来控制代码的顺序以达到目的
流程控制主要有三种结构,分别是顺序结构、分支结构和循环结构
顺序结构是程序中最简单、最基本的流程控制,他没有特定的语法结构,程序会按照代码的先后顺序,一次执行,程序中大多数代码都是这样执行的。
由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果
js语言提供了两种分支结构语句
if(条件表达式){
//执行语句
}
if 条件表达式结果为真true 则执行大括号中的执行语句;若条件表达式为假 false 则不执行括号中的语句
if(条件表达式){
//执行语句1
}else{
//执行语句2
}
条件表达式为真 执行 执行语句1 ;为假则执行 执行语句2 。最终只能执行一条语句
if(条件表达式1){
//执行语句1
}else if (条件表达式2){
//执行语句2
}else{
//其他语句
}
条件表达式 ? 表达式1 : 表达式2
条件表达式为真 返回 表达式1 的值,否则 返回 表达式2 的值
switch 语句是多分支语句,他用于不同的条件来执行不同的代码。当要针对变量 设置一系列的特定值的选项时,就可以使用switch。
switch(表达式/变量){
case value1:
//语句1;
break;
case value2:
//语句2;
break;
case value3:
//语句3;
break;
...
case valuen:
//语句n;
break;
default:
//最后的语句
}
重复执行某些语句
在js中,主要有三种类型的循环语句:
被重复执行的语句称为循环体
for (初始化变量; 条件表达式(终止条件); 操作表达式){
//循环体
}
while(条件表达式){
//语句
}
do {
//循环体
}while(条件表达式)
continue : 跳出本次循环,进行下一次循环
break : 跳出整个循环