JavaScript 是一种具有面向对象能力的、解释型的程序设计语言。
作用: 验证发往服务器端的数据、增加 Web 互动、加强用户体验度等。
JavaScript与java之间的关系:
雷锋与雷峰塔
老婆与老婆饼
周杰与周杰伦
印度与印度尼西亚...
JavaScript 的组成 :
ECMAScript 核心语法
BOM 浏览器对象模型
DOM 文档对象模型
js的基础使用方式;
行内js : js代码定义在html元素标签上
内部js : 通过script标签对定义在html中
外部js : 定义在外部的一个js文件中,通过script标签引入
注意:
一个script标签对只能用要不引入外部js,要不定义内部js代码
位置:
可以定义在html中的任意位置
建议:
1.head中
一幕了然,便于后期维护
有可能获取不到元素
2.body结束之前
肯定能够获取到每一个元素
不便于观察
常见调式
1.alert 弹出框
最先执行
不推荐做调试使用
2.document.write("在文档页面中写入内容")
当页面内容加载完毕之后,再触发document.write的执行,会覆盖原页面
3.console控制台输出 -> 推荐使用
console.log()
console.info()
console.error()
console.warn()
变量
? 存储一个数据
数组 : 存储多个数据
变量的定义:
通过var关键字声明
1)声明的同时赋值
var 变量名 = 赋值;
2)先声明后赋值
var 变量名;
变量名 = 赋值;
3)一行中通过定义多个变量
注意:
js中的变量的类型由值决定
js是一门弱类型语言,java是请强类型语言
js变量不赋值存在默认值 undefined
变量的作用域提升:
把当前的通过var定义的变量的声明提升到当前作用域的最上面
在js中变量的定义可以省略var关键字,但是就不存在变量的作用域提升
数据类型
简单数据类型
Number 数值型 -> 蓝色
整数 小数
NaN not a number
1)直接赋值
2)通过运算无法得到一个正确的结果 NaN
String 字符串 -> 黑色
可以通过一对'',或者一对""定义字符串
可以包含0~n个字符
如果字符串中出现特殊字符,可以通过转义字符进行转义 \
Boolean 布尔型 -> 蓝色
true
false
Null 空 -> 灰色
1)直接赋值null
2)获取不到元素得到null
Undefined 未定义 > 灰色
1)直接赋值undefined
2)变量已声明未赋值就为undefined
Function 函数型
function 函数名(参数列表){
函数体;
}
复杂数据类型
对象型 {}
键值对的集合
key : value
每个键值对之间使用,分隔
键与值之间使用:分隔
value可以为任意类型的值
类型判断
typeof 判断数据类型
typeof 数据
typeof(数据)
返回数据类型的小写字符串表现形式
类型转换
端隐式类型转换 | 自动
在进行一些其他操作运算的时候,目的不是为了发生类型转换,而在运算过程中会默认自动发生类型转换,这种类型转换成为隐式类型转换
一般为四则运算 + - * / ..
显示类型转换 | 强制
任意类型都可以转换为一下三种类型 : String Number Boolean
1. Number(数据)
2. String(数据)
3. Boolean(数据)
注意: 对象类型,函数类型不参与类型转换
1.String(数据)
相当于在数据的两添加一对引号
2.Number(数据)
String
'' 空串 -> 0
' ' 空格字符串 -> 0
'123' 纯数字字符串 数字
'123abc' 非纯数字字符串 NaN
Boolean
false ->0
true ->1
Null -> 0
Undefined -> NaN
3.Boolean()
String
'' false
' ' true
其他字符串 true
Number
0,NaN ->false
非0数字 ->true
Null ->false
Undefined ->false
数组
数组 : 存储多个数据
可变长,长度根据跟随数据的增删动态的改动
索引,可以根据索引操作数组中的数据
数组的索引可以跟随数据的改动进行动态修改
如果数组存在,索引位置存在,但是没有赋值,默认undefined
js中的数组中可以存放任意类型的数据
创建方式:
1.字面量的创建方式 [数据1,数据2...] -> 推荐
2.new Array() 空数组
3.new Array(值1,值2...)
数组的长度: 数组名.length
数组的索引 : 从0开始,每次+1
操作数组中的数据:
跟随索引操作
数组名[索引值]
数组常用方法
slice 截取(切片)数组,原数组不发生变化
1个参数 起始索引,默认截取到最后
2个参数 起始索引 结束索引 结束索引位置不包含
splice 剪接数组,原数组变化,可以实现前后删除效果
1个参数 起始索引 实现删除与截取的效果
2个参数 起始索引 删除|截取个数 实现删除与截取的效果
3个往上 起始索引 个数 从第三个参数开始后面所有的参数为要替换的新数据 替换,截取
函数
函数 : 定义功能的实现
函数声明 :
function 函数名(参数列表){
函数体;
return 返回值;
}
函数的调用:
1)函数名(实参) -> 执行函数中的代码
2)把函数声明转为函数表达式进行自调用
转换方式: 在函数声明的开始位置添加!,~,+,-
函数表达式
var 变量名 = function 函数名(形参){
};
函数的调用:
1)变量名(实参);
2)在函数的最后直接添加()进行自调用
注意:
1.在js中所有的函数都存在返回值,没定义返回值默认undefined
2.形参与实参可以不一一对象,如果没有对应的实参,形参的默认值undefined
3.函数表达式中的函数名一般省略不写,不可用来调用函数,只有在发生递归的时候有用
作用域 : 函数
块: {} 具有语义化的特点
函数的作用域提升 : 把函数声明方式定义的函数提升到当前作用域的最上面
变量的作用域提升 : 把通过var定义的变量的变量的声明,提升到当前作用域的最上面
注意:
js中的函数可以任意嵌套
内置对象
Arguments 只在函数内部定义,保存了函数的实参
操作数组的方式操作arguments对象
Array 数组对象
Date 日期对象,用来创建和获取日期
// 获取日期
? getFullYear() 年
? getMonth() 月
? getDate() 日
? getHours() 时
? getMinutes() 分
? getSeconds() 秒
// 设置日期
? setYear()
? setMonth()
? setDate()
? setHours()
? setMinutes()
? setSeconds()
? toLoacaleString() 转换成本地时间字符串
注意:
getMonth():得到的值:0~11(1月~12月)
setMonth():设置值时0~11
toLocaleString():可根据本地时间把 Date 对象转换为字符串,并返回结果。
Math 数学对象
? ? Math.random() 随机数
? Math.ceil() 向上取整,大于最大整数
? Math.floor() 向小取整,小于最小整数String
String 字符串对象,提供对字符串的一系列操作
? charAt(idx) 返回指定位置处的字符
? indexOf(Chr) 返回指定子字符串的位置,从左到右。找不到返回-1
? substr(m,n) 返回给定字符串中从m位置开始,取n个字符,如果参数n省略,则意味着取到字符串末尾。
? substring(m,n) 返回给定字符串中从m位置开始,到n位置结束,如果参数n省略,则意味着取到字符串末尾。
? toLowerCase() 将字符串中的字符全部转化成小写。
? toUpperCase() 将字符串中的字符全部转化成大写。
? length 属性,不是方法,返回字符串的长度。
对象
对象 Object
{}
键值对的集合
键 : 值
键值对之间通过 ,进行分隔
所有的键默认都是字符串 ""
如果key符合标识符的命名规范.可以省略""
value可以为js中任意类型
操作对象的属性:
根据key获取value
1)对象名.属性名
2)对象名["属性名"]
js中对象的创建方式:
1.字面量的创建方式 {}
2.new Object() 空对象
JSON : JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
JSON 与 JS 对象的关系
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
常见的json数据:
'{"name": "John Doe", "age": 18, "address": {"country" : "china", "zip-code": "10000"}}'
key都是通过""定义的字符串
value : 数值型,字符串,对象{},数组[],boolean,null
js对象与json串之间的转化问题
序列化 : 将对象转为可存储或者可传输的数据的形态的过程
|