1、什么是Javascript?
- Javascript是一种弱类型脚本语言,其源代码不需经过编译,而是由浏览器解释运行,用于控制网页的行为
- JavaScript语言实际上是两种语言风格的混合产物,即(简化版的)函数式编程+(简化版的)面向对象编程。借鉴C语言的基本语法,借鉴Java语言的数据类型和内存管理...
- 一个合格的后端人员,必须要精通Javascript
2、快速入门
2.1、引入JavaScript
- 内部标签
- 外部引入
```html/xml
<!-- 1.外部写法-->
<script src="js/js.js"></script>
<!-- 2.行内写法:script标签内,写JS代码-->
<!-- 放在body的最下面或head的头部里-->
<!-- <script>-->
<!-- alert('hello,Icey');-->
<!-- </script>-->
### 2.2、基本语法入门
```html/xml
<body>
<script>
// 1.定义变量:变量类型 变量名 = 变量值; eslink检查js强语法规范工具
var num=1;
var zzz=2;
alert(num);
// 2.条件控制
if (2>1){
alert("true");
}
</script>
</body>
注意:
- JavaScript严格区分大小写
- 没有要求强语法,但有工具ESlink可以检查JS语法规范
- console.log(//var):在浏览器的控制台打印变量=sout
- 浏览器调试
2.3、数据类型与运算符
数值,文本,图像,音频,视频...
==变量==
- 早期JS中变量都以var命名,ES6后可使用let和const区分局部变量和全局变量了,确保安全性
- l==et和var作用域不同,var是函数作用域,而let是快作用域==。也就是说,在函数内声明了var,整个函数内都是有效的。
- e.g.在for循环内定义了一个var变量,实际上其在for循环以外也是可以访问的;
而let由于是块作用域,所以在块作用域内(比如说for循环内)定义的变量,在其之外是不可以被访问的,因此let用在for(let i;i<n;i++)是一种很推荐的写法!==1.number:JS不区分小数和整数,统一用number表示==
123 //整数 123.1 //浮点数 1.123e4 //科学计数法 -99 //复数 NaN //not a number Infinity // 表示无限大
==2.字符串==
'abc' "abc"
==3.布尔值==
true false
==4.逻辑运算==
&& || ! 取反
==5.比较运算==
= 赋值
== 等于 1==‘1’
=== 绝对等于 (类型一样&&值一样才为true)
注意:
1.浮点数问题
console.log((1/3) === (1-2/3)) //结果为false,因为会有精度的损失
2.NaN问题
NaN === NaN //结果为false,因为它与所有的数值都不相等,包括自己
isNaN(NaN) //只能通过这个方法来判断这个数是否是NaN
==6.null和undefined==
- null 空
- undefined 未被定义
==7.数组==
数组:在Java中即一系列相同类型的对象,但JS语法不需要类型相同
var arr = [1,2,3,7,'hello',null,true] //为了更好的可读性,推荐这种[ ]
new Array(1,2,3,7,'hello',null,true);
==8.对象==
// Java:Person person = new person(1,2,3,4,5);
var person ={ //{
name:"Icey",
age:19, //属性之间逗号隔开
tags:['js','java','web'] //lastone不需要逗号
}
严格检查模式
'use strict',严格检查模式,预防JavaScript的随意性导致的一些问题
'use strict'
//全局变量
i = 1;
// ES6 let
3、数据类型
1.正常字符串我们使用单引号或双引号包裹
2.注意转义字符
\'
\n
\t
\u####
\x41
3.多行字符串编写
var msg =
` hello
world
你好
你好呀
`
4.模版字符串
'use strict';
let name = 'xiaoma';
let msg = `你好呀,${name}`
运行如下:
5.字符串长度
console.log(str.length)
6.字符串的可变性,不可变
7.大小写转换
//这里是方法,不是属性了
student.toUpperCase()
student.toLowerCase()
8.student.indexOf('t')
9.substring字符串切片
//substring = [) 含头不含尾
student.substring(1)
3.2、数组
==Array可以包含任意的数据类型==
var arr = [1,2,3,4,5] //通过下标取值和赋值
arr[0]
arr[0] = 1;
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
arr
(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并没有修改数组,只是会返回一个新的数组
函数返回值,不改变数组;返回的新数组可以定义个新数组arr2去接收
9.连接符——join
打印拼接数组,使用特定的字符串来连接
arr
(3) ['C', 'B', 'A']
arr.join('-')
'C-B-A'
10.多维数组