简介:
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"