脚本标签 script
创建的公司 美国的网景公司Netscape 创建人 布兰登.艾克
一开始叫livescript 后来改成javascript 为了营销与sun公司合作
javascript 与java的区别
script是运行在客户端的语言
java是运行在服务端的语言
javascript是什么
是一门脚本语言.编程语言 解释性语言 动态类语言 基于对象的语言
编程语言 计算机能够接受和处理的能够的,具有一定语法规范的语言
脚本语言 直接解释执行 缩短了编写编译连接和运行过程而创建的计算机编程语言
解释性语言 解释执行不需要编译过程,直接由解释器(js引擎)解释并执行代码
动态类语言 静态类语言在编译是就已确定编译的类型 动态类型语言的变量类型要到程序运行的时候,
带变量被赋予某个值后 才会具有某种类型
基于对象的语言 不是面向对象的,只是具有某些变相对象的特征
javascript的组成部分
ECMAscript 简称Es 规定了语法规则 比如 变量 数据类型 运算 流程控制 函数 对象等等
DOM document object model 文档对象模型
BOM browser object model 浏览器对象模型
能做什么
1.网页的动画效果
2.网页的交互
3.uniapp 与手机硬件功能调用
4.开发桌面应用
5.node, 运行在服务端的js
变量 计算机内存储的表示符
获取数据, 存储数据,改变数据
1.声明变量 var 变量名
2.声明变量并赋值
3.声明多个变量
4.声明多个变量并赋值
5.不用var定义变量
字面量 代表一个具体的值
变量的命名规范
1.必须有字母数字下划线$符号组成 开头不能是数字
2. 不能是关键是和保留符
3.区分大小写
二.规范
1.驼峰命名法 第一个首字母大写
2.见明知义
写法
内部书写:直接在script中书写
外部书写 外部的js文件中书写
行内属性 在标签中书写js
数据类型
数据类型
数字类型:number 字符串类型:string 布型n尔类型boolean 空ull 未定义undefined 唯一值symbol
引用类型 数组 函数 对象 set map
数字类型number
判断一个变量的数据类型 typeof 变量名
1.数值
十进制 科学技术法
尽量不要用浮点型 因为显示的是浮点型的近似值
最大值Number.MAX_VALUE
最小值Number.MIN_VALUE
正无穷 Infinity
八进制 0~7 0
十六进制 0~9 a~f 0x
非数值NAN 与任何值都不相等包括他本身
isNAN() 判断一个变量或者值是否为非数值,如果是true 如果不是false
字符串
1. 只要是单引号或者是双引号包起来的
2.字符串中单个的字符或者连续的字符
3. 字符串的长度 字符中单个字符的长度 length 字符串名.length
4.空字符串 字符串中长度为0
5. 字符串的拼接 +
如果加号两边有一个是字符串那就是字符串的拼接
如果加号两边都是数字 那就是数字的加法运算
布尔类型 true false
空型 null 未定义undefined
变量值声明 不赋值 未定义
变量不声明报错
数据类型转化
其他类型转换为字符串类型
数字 布尔 通过变量名.toString()
空型 未定义 String(变量名/值)
转为布尔
Boolean(0.2)
结果为false的情况 false/0/空字符串/NaN/null/undefined 其余为true
转化为数字
Number()
parseInt() 遇到非数值或者第一个小数点结束
parseFloat()遇到非数值或者第二个小数点结束
1.undefined转为数字 都是NaN
2.null转换为数字 Number()0
parseInt()NaN
parseFloat()NaN
3.布尔转为数字 Number() true是1 false0
parseInt()NaN
parseFloat()NaN
4.字符串转为数字 umber()
如果字符串中值包含数字 将其转化为十进制数值,忽略前导0
如果字符串中包含有效浮点格式1.1 将其转换为对应的浮点数字 忽略前导0
如果字符串中包含有效的十六进制格式 如0xf 将其转换为相同大小的十进制数值
如果字符串为空,展缓为0
如果字符串包含上述格式之外的字符,惊奇转化为NaN
运算
算数运算 + - * / %
一元运算 前置++ 先加一在给变量赋值 后置++ 先给变量赋值在加一 前置-- 后置--
逻辑运算 && 两个同时为true 结果为true 否则为false
||有一个为true 结果为true 否则为false
!取反 当一元运算符使用
比较运算
> < >= <= == === != !== == 相等值比较数值是否相等 ===比较数值还要比较数据类型
赋值运算 += -= *= /= %=
优先级
括号>点数运算> 一元运算>算数运算>比较运算>逻辑运算>赋值运算
补充 todixed(n) 保留n为小数结果取余
流程控制 顺序结构:程序从上往下执行 条件结构 根据不同情况执行相应的代码
if(条件判断语句){
满足条件语句执行的代码
}else{
不满足
}
三目运算符(三元运算符)是if……else的简化版
表达式1 ? 满足表达式2 : 不满足表达式3
switch (判断的变量) {
case 可能的值:
执行语句
break;
case 可能的值:
执行语句
break;
default
执行语句
}
while(循环的判断条件){
循环体
自增或者自减语句
}
do {
循环体
自增自减语句
}while(循环条件判断)
for (初始表达式;判断表达式;自增or自减表达式){
循环体
}
continue与break的区别:
break:立即跳出整个循环,即循环结束,开始执行循环后面的内容(直接跳到大括号)
continue:立即跳出当前循环,继续下一次循环(跳到i++的地方)
数组
为什么用数组
存储数据更加方便 为了节省空间
数组的概念 :将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组
元素:数组中单个值
顺序:数组是有序的
集合:数组当做集合
三、创建数组的方式:
1、字面量创建数组
2、构造函数创建数组
数组中的元素可以是任何数据类型,元素之间用逗号隔开 数组是引用数据类型
获取元素
索引:又称之为数组的小标,是元素的唯一的标识符,从0开始依次累加
数组名[索引值]
任何一个数组arr的第一个元素是arr[0],最后一个元素是arr[arr.length-1]
元素的添加与删除
1、栈操作
添加元素 push() 删除元素 pop() 仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶
先进后出 数组名.push() 数组名.pop()
八、遍历数组:将数组中的所有元素访问一遍
for(var i = 0; i< p1.length; i++ ){
console.log(p1[i])//数组名[]
}
函数
为什么使用函数:为了减少代码的冗余量、提高开发效率
函数的概念:将具体特定功能的代码封装在一起,形成函数
定义函数的方式:
1、函数的声明 function 函数名(){函数体}
2、函数表达式 var 函数名()=function{函数体}
3、构造函数
四、函数的命名规范==变量的命名规范
五、函数的调用:就是执行函数体中内容
六、参数
实际参数:函数调用时小括号中的变量或者具体值
形式参数:函数定义时小括号中的变量
函数是引用数据类型
数组 ---object
null--->object
函数---->function
对象----->object
函数的返回值
函数的返回值:函数调用的结果就是函数的返回值
1.如果函数中没有使用return语句,那么它的返回值就是undefined
2.如果使用了return语句且在return的后面 就成了函数的返回值
3.如果使用了return且return后没有任何值 那么它的返回值也是unidfined
4.函数执行完return后 将会退出不在执行后面的代码
函数的进阶
如果两个函数都是函数的声明,且函数名相同,那么后边的函数会覆盖前边的
如果两个函数都是函数表达式,且函数名相同,函数的调用会调用最近的一个
如果两个函数分别是函数表达式和函数声明,且函数名相同,函数表达式会覆盖函数声明
函数的内置对象:任何一个函数都有一个内置对象arguments,它本身是个数组
length:实参的个数
callee.length:形参的个数
callee.name:函数名
// 五、匿名函数 一般用于回调函数
func_1(
10,
20
) ;(function () {
console.log('我是匿名函数!')
})()
// 匿名函数的自调用
var func_2 = (function (x) {
console.log(x)
})(10.23)
// 六、函数作为参数传入
function funct_1(x) {
console.log(x)
x()
}
funct_1(function () {
console.log('我是函数也是参数')
})
// 七、函数作为参数返回
function funct_2(y) {
return y
}
var result = funct_2(function () {
console.log('我是函数也是参数进行返回值返回')
})
console.log(result)
result()