1.JavaScript的简介
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
JavaScript的标准是ECMAScript 。截至 2012 年,所有浏览器都完整的支持ECMAScript 5.1
2.JavaScript数据类型
1.number
js不区分小数和整数,Number
123 //整数123
123.1 //浮点数123.1
1.123e3 //科学计数法
-99 //复数
NaN //not a number
Infinity //表示无穷大
2.字符串
'abc' "abc"
3. 布尔值
true false
4.逻辑运算
&& 两个都为真,结果为真
|| 一个为真,结果为真
! 真即假,假即真
5.比较运算符
=
== 等于(类型不一样,值一样,也会判断为true)
=== 绝对等于(类型一样,值一样,结果true)
- 这是一个JS的缺陷,坚持不要使用==比较
须知:
- NaN===NaN,这个与所有的数值都不相等,包括自己
- 只能通过isNaN(NaN)来判断这个数据是否是NaN
浮点数问题
console.log(1/3)===(1-(2/3))
尽量避免使用浮点数进行运算,存在精度问题
math.abs(1/3-(1-2/3))<0.0000001
6.null和underfined
• null 空
• underfined 未定义
7.数组
Java的数值必须是相同的对象,JS中不需要这样!
//保证代码的可读性,尽量使用[]
var arr=[1,2.3,4,5,'hello',null,true];
new Array(1,12,3,4,5,4,'hello');
取数组下标;如果越界了,就会
underfined
8.对象
对象是大括号,数组是中括号
每个属性之间使用括号隔开,最后一个不需要添加
// Person person=new Person(1,2,3,4,5);
var person={
name:"xiaohuihui",
age:3,
tags:['js','java','web']
}
取对象的值
person.name
>"xiaohuihui"
person.age
>3
3.严格检查格式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 前提是IDEA需要设置支持ES6语法
'use strict'; 严格检查模式,预防JavaScript的随意性导致产生的一些问题。必须写在JavaScript的第一行
局部变量建议使用let去定义-->
<script>
'use strict';
//全局变量
let i=1;
</script>
</head>
<body>
</body>
</html>
4.字符串类型详解
1.正常字符串我们使用单引号,或者双引号包裹
2..注意转义字符\
- \ '
- \n
- \t
- \u4e2d ----\u#### Unicode字符
- \x41 Ascll字符
3.多行字符串编写
//tab上面的esc 下面的
var msg=
hello
world
你好!
4.模板字符串
let name="xaiohuihui";
let age=4;
let msg=`你好!${name}`
5.字符串长度
str.length
6.字符串的可变性,不可变
console.log(student[0])
s
undefined
student[0]=1
1
console.log(student)
studnet
undefined
7.大小写转换
//注意,这里是方法,不是属性
student.toUpperCase()
studnet.toLowerCase()
8.student.indexOf()
9.substring
student.substring(1) //从第一个字符串截取到最后一个字符串
student.substring(1,3) //[1,3)
5.数组类型详解
Array可以包含任意类型的数据类型
var arr=[1,2,3,4,6]
1.长度
arr.length
注意:加入给arr.length赋值,数组大小就会发生变化,如果赋值过小,元素就会丢失
2.indexOf:通过元素获取下标索引
arr.indexOf(2)
1
注意:字符串的"1"和数字1是不同的
3.slice():截取Array的一部分,返回一个新数组,类似于String中的substring
4.push(),pop()尾部
push:压入到尾部
pop:弹出尾部的一个元素
5.unshift(),shift()头部
unshift:压入到头部
shift:弹出头部的一个元素
6.排序sort()
(3)["B","C","A"]
arr.sort()
(3)["A","B","C"]
7.元素反转reverse()
(3)["A","B","C"]
arr.reverse()
(3)["C","B","A"]
8.concat()
(3)["C","B","A"]
arr.concat([1,2,3])
(6)["C","B","A",1,2,3]
arr
(3)["C","B","A"]
注意:concat()并没有修改数组,只是会返回一个新的数组
9.连接符join
打印拼接数组,使用特定的字符串连接
(3)["C","B","A"]
arr.join('-')
"C-B-A"
10.多维数组
arr=[[1,2],[3,4],["5","6"]];
arr[1][1]
4
6.对象类型详解
若干个键值对
var 对象名={
属性名:属性值,
属性名:属性值,
属性名:属性值
}
//定义了一个person对象,有四个属性
var person={
name:"xiaohuihui",
age:3,
email:"2391019497@qq.com",
score:0
}
JavaScript中对象,{.......}表示一个对象,键值对描述属性xxxx:xxxxx,多个属性之间使用逗号隔开,最后一个属性不加逗号!
1.对象赋值
person.name="xiaohuihui"
"xiaohuihui"
person.name
"xiaohuihui"
2.使用一个不存在的对象属性,不会报错!underfined
person.haha
undefined
3.动态删减属性,通过delete删除对象的属性
delete person.name
true
person
4.动态添加,直接给新的属性添加值即可
person.haha="haha"
"haha"
person
5.判断属性值是否在这个对象中,xxx in xxx
'age' in person
true
//继承
'tostring' in person
true
6.判断一个属性是否是这个对象自身拥有的 hasOwnProperty()
person.hasOwnProperty('tostring')
false
person.hasOwnProperty('age')
true