简介:
JavaScript是目前web开发中不可缺少的脚本语言,js是解释性语言,不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。
诞生于1995年,当时的主要目的是验证表单的数据是否合法。
JavaScript本来应该叫Livescript,但是在发布前,想搭上当时超热的java,临时把名字改为了JavaScript。(也就是说js跟java没有关系,当时只是想借助java的名气)。
特点:
- 交互性(它可以做的就是信息的动态交互)
- 安全性(不允许直接访问本地硬盘)
- 跨平台性(只要是可以解析js的浏览器都可以执行,和平台无关)
核心
(1)核心(ECMAScript):这一部分主要是js的基本语法。
(2)BOM:Brower Object Model(浏览器对象模型),主要是获取浏览器信息或操作浏览器的,例如:浏览器的前进与后退、浏览器弹出提示框、浏览器地址栏输入网址跳转等操作等。
(3)DOM:Document Object Model(文档对象模型),此处的文档暂且理解为html,html加载到浏览器的内存中,可以使用js的DOM技术对内存中的html节点进行修改,用户从浏览器看到的是js动态修改后的页面。(增删改查)
书写的3种方式
- 内嵌式:
理论上js可以书写在页面的任意位置。
<script>
// js标签内的js代码
alert('Hello World!');
</script>
- 外链式:
首先新建一个文件类型为.js的文件,然后在该文件中写js语句,通过script标签对引入到html页面中。
<script src="js文件路径地址">这里不能写js语句</script>
- 行内式:
直接书写在标签身上,是一个简写的事件,所以又称之为事件属性。 onclick单击事件
<input type="button" value="点我" onclick="alert('木有');">
<button onclick="alert('恭喜你,一个对象到手');">点我</button>
注释
两种注释:单行注释和多行注释,注释是用于表示解释代码的,并不会被执行,是给我们程序员看的,方便增删改查……
//我是一个单行注释
/*
我是
一个
多行
注释
*/
变量
<script>
//定义变量
var num = 1;
var name = 'liusen'
</script>
万物皆var
- js是弱类型语言,声明的变量在赋值之前,并不知道是什么数据类型,赋值之后就会判断其数据类型
- 没有赋值的变量返回的是undefined,表示空
命名规范:
- 首字符可以是数字,下划线,美元符号,不可以是数字,其他字符可以是数字,字母,下划线,$……
- 以$开头的一般是jQuery库或者其他类库声明的变量
- object是对象类型的命名,变量以o开头
- 首字符是下划线的一般表示私有变量
- 驼峰命名,有多个单词时,从第二个单词开始首字母用大写
- 不推荐使用中文或拼音,尽量通用且见名之意
条件控制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
//定义变量
var num = 79;
var name = 'liusen'
//条件控制
if(num>60 && num<70){
alert('及格');
}else if(num>70 && num<80){
alert('良好');
}else{
alert('其他');
}
</script>
</head>
<body>
</body>
</html>
运行结果:
注意:Javascript是严格区分大小写的
调试:浏览器打开----检查-----控制台
Elements:元素
Console:控制台
Sources:源码,调试
Network:网络
Application:应用
打断点调试
数据类型
number:js不区分整数和小数
123 //整数
123.3 //浮点数
123e3 //科学计数法123000
-99 //负数
NaN //not a number
Infinity//无穷
字符串
'abc' "abc"
'\n'
布尔值
false
true
逻辑运算
&& //两个都为真,结果为真
|| //一个为真,结果为真
! //真即假,假即真
比较运算符⭐⭐⭐
= //赋值
== //等于,类型不一样,值一样,也会判断为true
=== //绝对等于,类型一样值一样,才会判断为true
这是一个js的缺陷,坚持不要用==比较
- NaN与所有的数值都不相等,包括自己
- 只能通过 isNaN(NaN)来判断这个数是否是NaN
浮点数问题:
尽量避免使用浮点数进行运算,存在精度问题
Math.abs(1/3-(1-2/3))<0.000000001
null和undefined
- null 空
- undefined 未定义
数组
Java的数组必须是相同类型的,js中不需要这样!
//保证代码的可读性,尽量使用[]
var arr = [1,2,3,4,5,'hello',null,true];
new Array(1,2,3,4,5,'Hello');
数组下标越界,会:
对象
var person = {
name:"liusen",
age:3,
ta:['js','CSS','html']
}
对象是一个大括号,数组是中括号
每个属性之间用逗号隔开,最后一个不需要添加
娶对象的值:
person.age
> 3
person.name
> "liusen"