一、JavaScript介绍
1.JavaScript是什么语言
JavaScript(简称JS)是一种运行在客户端的脚本语言,也可以说,是一门脚本语言、是一门解释性语言、是一门动态类型的语言、是一门基于对象的语言。(不是面向对象)、是一门弱性语言(弱语言强语言针对数据类型来说,弱语言能自动变换类型)
2.JavaScript的组成
(1)ECMAScript - JavaScript的核心
描述了语言的基本语法和数据类型,是一套标准,定义了一种语言的标准与具体实现无关。
(2)BOM - 浏览器对象模型(Browser object model)
一套操作浏览器功能的API。通过BOM可以操作浏览器窗口,比如:弹出框、控制浏览器跳转、获取分辨率等。
(3)DOM - 文档对象模型
一套操作页面元素的API。DOM可以把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作。Document object model
3.JavaScript代码写法
js的代码可以分四个地方写:
1.在html的文件中,script的标签中写js代码
2.js代码可以在html的标签中写
3.在js文件中可以写js代码,但是需要在html页面中引入script的标签中的src="js的路径"
4.还可以在控制台直接书写js代码
4.JavaScript问题总结
1.在一对script的标签中有错误的js代码,那么该错误的代码后面的js代码不会执行
2、如果第一对的script标签中有错误,不会影响后面的script标签中的js代码执行
3、script的标签中可以写type="text/javascript"标准写法或者写language="JavaScript"都可以。但是,目前在我们的html页面中,type和language都可以省略,原因:html是遵循h5的标准。
4、有可能会出现这种情况:script标签中可能同时出现type和language的写法。
5、script标签在页面中可以出现多对。
6、script标签一般是放在body的标签的最后的,有的时候会在head标签中,目前讲课的时候都在body标签的后面(body中的最后)。
7、如果script标签是引入外部js文件的作用,那么这对标签中不要写任何的js代码,如果要写,重新写一对script标签,里面写代码。
5.注释
(1)单行注释——//这是注释
(2)多行注释——/*这是注释*/
二、变量的命名规则和规范
1.规则 - 必须遵守的,不遵守会报错
1、由字母、数字、下划线、$符号组成,不能以数字开头
2、不能是关键字和保留字,例如:for、while。
3、区分大小写
2.规范 - 建议遵守的,不遵守不会报错
1、变量名必须有意义
2、遵守驼峰命名法。首字母小写,后面单词的首字母需要大写。
3关键字、保留字
js中的关键字:可用于表示控制语句的开始或结束,或者用于执行特定操作等
break、else、new、var、 case、 finally 、 return、 void 、 catch 、for
、switch 、 while 、 continue、 function 、this 、
with 、default 、 if 、 throw 、 delete 、 in 、 try 、do 、 instranceof、 typeof
js中保留字:尽管保留字在这门语言中还没有任何特定的用途,但它们有可能将来被用作关键字。下面是ECMA第3版定义的全部保留字:
abstract 、 enum 、int 、 short 、 boolean 、export 、interface、
static、 byte 、extends 、 long 、 super 、 char 、 final 、native 、synchronized 、 class 、float 、 package 、throws 、 const 、goto 、private 、
transient 、 debugger 、 implements 、protected 、 volatile 、 double 、import 、public
三、JavaScript数据类型
1.基本数据类型(5种)
1.number类型
十进制、十六进制(以0x开头)
八进制(以0开头):如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析
浮点数:浮点数值的最高精度是17位小数
注意:不要判断两个浮点数是否相等
最小值:Number.MIN_VALUE,这个值为: 5e-324
最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
无穷大:Infinity
无穷小:-Infinity
数值判断(JS是一个弱类型,隐式类型转化)
NaN:not a number (可以通过Number()方法判断)——先转换成数字类型,再看是不是NaN。
NaN与任何值都不相等,包括他本身
isNaN(): is not a number (如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false)
2.string类型
\n——换行
\t——制表(tab键)
\\——斜杠
\'——单引号
\“——双引号
字符串长度——length属性用来获取字符串的长度
console.log(str.length);
字符串拼接(重点掌握)字符串拼接使用 + 连接
两边只要有一个是字符串,那么+就是字符串拼接功能
两边如果都是数字,那么就是算术功能。
加法:num+” ”,变成str类型
减法:num-str,变成num类型
3.Boolean类型(true和false)
4.Undefined(未赋值变量)和Null(需要手动设置)
2.复杂数据类型
Object
Var obj = { age:18;name:”张三”; } //对象
(3)数据类型转换
typeof关键字(检测数据类型)
console.log(typeof null); //结果为object;(null 值表示一个 空对象指针)
toString()——转换成字符串类型
var num = 5;
console.log(num.toString());
String()
var str = String(Str);
拼接字符串方式
num + "" ,返回字符串
转换成数值类型
Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN。
Number()转化规则
a. 如果字符串中只包含数字时,将其转换为十进制数值,忽略前导0
b. 如果字符串中包含有效浮点格式,如“1.1”,将其转换为对应的浮点数字,忽略前导0
c. 如果字符串中包含有效的十六进制格式,如“0xf”,将其转换为相同大小的十进制数值
d. 如果字符串为空,或者是空内容,将其转换为0
e. 如果字符串中包含除上述格式之外的字符,则将其转换为NaN
parseInt()
// 返回12,如果第一个字符是数字会解析知道遇到第一个小数点结束
var num1 = parseInt("12.3abc"); //向下取整
// 返回NaN,如果第一个字符不是数字或者符号就返回NaN
var num2 = parseInt("abc123");
parseFloat()
parseFloat()把字符串转换成浮点数,parseFloat()和parseInt非常相似,不同之处在与
parseFloat会解析第一个. 遇到第二个.或者非数字结束
转换成布尔类型——Boolean()
0, ' ' ,null ,undefined ,NaN会转换成false,其它都会转换成true。 //(' '中没有内容)
7.JavaScript运算
(1)算术运算符——+ - * / %
(2)一元运算符(只有一个操作数的运算符)
前置++ 先将自身的值自增1,再将自增后的值赋值给变量
后置++ 先将自身的值赋值给变量,然后再自增1(--类似)
3.逻辑运算符(布尔运算符)
&& 与 两个操作数同时为true,结果为true,否则都是false
|| 或 两个操作数有一个为true,结果为true,否则为false
! 非 取反
4.关系运算符
一个等号是赋值,两个等号是比较(不完全比较),三个等号是全等(完全比较)
null代表的是空指针对象,undefined代表的是未定义,所以null与undefined与任何值都不相等(==),但是我们在ECMA-262规定:null与undefined相等,但不全等,即null==undefined返回结果为true,实际上,undefined值是派生自null值的。
字符串大小的比较:
如果两个字符串中都是全数字,只需比较两个首字符串数字的大小即可。即:“50”>”8”返回结果为false
如果等号两侧有一个是数字类型,则将字符串转化为数字再进行比较。即:”50”>8返回结果为true
5.赋值运算符
= += -= *= /= %=
num += 5; //相当于 num = num + 5;
6.运算符的优先级
优先级从高到底如下:
括号>点运算符>一元运算符> 算数运算符 >关系运算符>逻辑运算符 >赋值运算符
注意:同级运算符先后顺序如下:
一元运算符 ++ -- !
算数运算符 先* / % 后 + -
关系运算符 > >= < <= == != === !==
逻辑运算符 先&& 后||