JavaScript概述
什么是JavaScript
javascript是一种运行于JS解释器/引擎中的解释性脚本语言
JS解释器/引擎其实就是JS运行环境:分为两种
1.独立安装的解释器NodeJS
2.浏览器内核中嵌入的JS解释器
注:解释型的语言在运行之前不会编译,编译型语言在运行前会先编译
JavaScript的发展史
完整的JavaScript的组成
1.核心(ECMAscript)
2.文档对象模型(DOM,Document Object Model)让JS有能力与页面元素进行对话
3.浏览器对象模型(BOM,Browser Object Model),让JS有能力与网页进行对话
JavaScript的特点
1.编写简单(任何文档编辑工具都可以编辑)
2.无需编译,直接运行
3.弱类型编程语言,由数值来决定数据类型
4.面向对象的编程语言
JavaScript的用途
客户端的JS
1.客户端的数据计算
2.表单输入验证
3.网页中的事件触发和处理:onlick 单击元素时做的操作
4.网页特效制作
5.服务器端异步数据提交(AJAX)
服务器端的JS
1.分布式运算
2.实时服务器
3.窗口应用
4.网络应用
JavaScript基础语法
使用JavaScript
浏览器内核:(浏览器内核负责内容的渲染,主要由两部分组成)
1.内容排版引擎-解析HTML/CSS
2.脚本解释引擎-解析JavaScript
浏览器 | 内核名称 | 内容排版引擎 | 脚本解释引擎 |
---|---|---|---|
IE | Trident | ---------- | Chakra |
Firefox | Gecko | ---------- | 猴子系列 |
Safari | Webkit | Webcore | Nitro |
Chrome | Webkit | Webcore | V8 |
Opera | Presto | ------------ | Carakan |
Opera(2013年后)后同Chrome | - | - | - |
运行JS方式
1.使用独立的JS解释器(了解)
2.使用浏览器内核中内嵌的JS解释器(重点)
- 2.1直接在Console中输入脚本并执行
- 2.2将JS脚本嵌入在HTML页面中执行
2.2.1html元素事件
onclick(鼠标单击时执行的操作)
onmouseover
onmousemove
2.2.22.2.3外部脚本块
中添加
1.创建脚本文件并编写脚本文件
2.引入脚本文件,在注意:
1.必须是成对的标签
2.在该对标签中,不允许有出现任何的内容JavaScript调试
1.解释性语言,若某行代码错误,则解释器终止此次执行
2.但不会影响后续块的执行,以及后续HTML元素的解析使用错误控制台查看
语法规范
语句:会被JavaScript引擎解释器执行的代码
1.由表达式,关键字,运算符组成
2.大小写敏感
3.使用分号或者换行结束注释:不会被JavaScript引擎解释执行的代码
1.单行注释://
2.多行注释:/............................../变量
什么是变量
相关概念
内存:保存程序在运行过程中所需要用到的数据
变量:内存中的一段内存空间
值:变量中(内存空间)所所存的数据
变量名:内存空间的别名变量的声明
声明:使用关键字var声明变量:
var useName;
声明变量并赋值:使用"="为变量赋值:
var bookPrice=29;
注意:
1.声明变量时可以不加var,但是不加的话,那么声明的就是“全局变量”,有可能造成“全局污染”
2.没有初始化的变量自动取值为undefinedvar publishDate; console.log(publishDate);
一个语句中声明多个变量
可以在一条语句中声明多个变量,变量名用","进行分隔
var name1,name2,name3;
var age1,age2=30;命名需要符合标识符语法要求
不允许使用语言关键字和保留字作为变量名标准关键字
break,case,catch,continue,default,delete,do,else,flase,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,undefined.........
预保留的关键字
class,int float
- 命名规范
标识符是什么?表示变量或函数的名称
标识符命名规范:
1.可以包含字母,数字,下划线和美元符号
2.不能以数字开头
3.常用于表示函数,变量等的名称
4,名称最好有明确的含义
5.可以采用"匈牙利命名法","下划线命名法","小驼峰命名法","大驼峰命名法",需要在开发团队进行协调统一变量的使用
未经初始化的变量
注:
1.变量定义之后,在使用前从未赋过值,它的值为undefined
2.变量未被定义过,如果被直接使用,属于语法上的错误在变量声明时初始化
在定义变量时立即进行初始化var age=10; var gender='男'; var zhengZhiMianMao='党员'; var email='[email protected]'; var isOnSale=true;
- 在第一次使用变量初始化,变量可以先声明,再赋值
var price; price=39; console.log(price);
可以对变量中的值进行存取,操作
1.获取变量的值 GET操作
(感觉就是把一个原有了值得变量再赋值给一个新的变量,类似于值得传递)2.重新设置变量的值SET操作
(有一个变量已经有一个值了,在把另一个有值得变量赋值给它,有点像值得覆盖)变量的操作必须于类型匹配
虽然JavaScript是弱类型语言,语法上允许变量先后赋值为任意有效值,但是在项目开发中,对变量的赋值和操作也要注意是否满足实际业务要求.比如人数不能是浮点数
常量
什么是常量?一旦声明好,就不能被修改的数据叫做常量
声明常量:
const 常量名=值;
注意:常量声明时,必须赋值.常量的声明一般采用全大些的方式
数据类型
什么是数据类型?保存在内存中的数据类型
8bit(位)=1byte(字节)
1024kb=1kb(千字节)
1024kb=1MB
1024MB=1GB
1024GB=1TB原始类型:
number 数字
string 字符串
boolean 布尔
特殊类型:
null 空
undefined 未定义
引用类型:
Object 对象
Function 函数
Number 数字
String 字符串
Boolean 布尔
Data 日期
Error 错误
基本数据类型(原始类型)
- number类型
数字类型: 既可以表示32位的整数,也可以表示64位的浮点数
整数:
十进制:逢十进一的整数:比如1234567890
八进制:逢八进一的整数:比如12345670
十六进制:逢十六进一的整数:比如0x123456789abcdef0浮点数:
使用小数点记录数据:94.2
使用指数记录数据:如4.3e23,4.3E-23
string类型
字符串类型:
1,表示一系列的文本字符数据,比如性别,姓名,住址等
2.由Unicode字符,数字,标点符号组成的序列
3JavaScript不像Java语言那样严格区分字符串和字符串类型
4.首位由一对单引号或者双引号括起来
5.特殊字符需要转义符 :\n换行 \r回车 \t制表符 \" : " \' : ' \\ : \
boolean类型: 布尔类型
1.仅有两个值:true和flase
2.也代表1和0
3.实际运算中true=1,flase=0
注:多用于结构控制语句数据类型转换
- 隐式转换
1.JavaScript属于松散类型的程序语言1.1变量在声明时不需要指定数据类型
1.2变量由赋值操作确定数据类型2.不同数据类型在计算过程中会自动进行转换
数字+字符串: 数字变字符串
数字+布尔值: true变1,flase变0
字符串+布尔值: 布尔值变为字符串true和flase
布尔值+布尔值: 布尔值转换为数值1或0
数字+undefined:结果为NaN,NaN的类型为numbertypeof()函数 (用于查询当前类型)
语法:var r1=typeof(变量);
返回string/number/boolean/object/finction/undefined例如:
typeof('hello'+3)
, 返回的是"string"
数据类型转换函数
toString(),将任何类型的数据转换成字符串类型
var newVar=变量.toString()
parseInt(),将一个数据转换“整数”,语法:
var result=parseInt(变量)
注意:
1.碰到第一个非数字字符则停止转换,已经转换的则保留
2.如果第一个字符就是非数字字符,结果为NaNparseFloat(),解析出一个string的浮点数部分,如果没有可以转换的部分,则返回NaN
Number(),把一个string解析为number,如果包含非法字符,则返回NaN
- isNaN函数
isNaN()
1.用于判断其参数是否为一个"非数字(NaN)"值
2.如果把NaN与任何值(包括其自身)相比得到的结果均为flase,所以要判断某个值是否为NaN,不要只用==或===运算符,这种情况下只能使用isNaN()函数
3.通常用于检测类型转换函数的运算结果,以判断它们表示的是否是一个合法的数字语法:
isNaN( ):是不是一个数字,返回结果 true 不是一个数字,flase 是一个数字例如:
console.log(isNaN("123.4a")); //true console.log(isNaN(parseInt("123.4a"))); //false
特殊数据类型
- null
1.语义:"存在该数据,但当前还不存在确定的值"
2.null在程序中代表"无值"或者"无对象"
3.可以通过给一个变量赋值null来清除变量的内容
- undefined
1.语义:"不存在该数据"
2.声明了变量但是从未赋值或者对象属性不存在var msg; console.log(msg); var emp=new Object(); console.log(emp.isOnSale);