JavaScript 学习记录
本文最后更新于 2022年5月18日 上午
JavaScript
相关概念
ECMA(European Computer Manufacturers Association)
制定了ECMAScript规范,2015年6月发布了ES6规范,直到今天发布到了ES11规范
快速开始
将JS代码嵌入到HTML中:
使用script标签直接在html的任何地方写JS代码:
1
2
3
4
5
6
7
8
9
10<html>
<head>
<script type="text/javascript">
alert('Hello, world');
</script>
</head>
<body>
...
</body>
</html>使用script标签引用js文件:
1
<script type="text/javascript" src="js/test.js"></script>
通常是放到html的
head
标签里面,加不加type="text/javascript"
都一样
JS的语法特别自由:
声明变量以下的方式:
var
var i = 10
let
const
什么都不加
i = 10
这几种变量的声明方式有作用域和修改的区别,待完善
甚至每行语句不需要加;
,因为JS会自动加上,这种方式如果代码编写不当将会有严重的问题:
1 |
|
调用这个函数将会返回undefined。
JS的注释和C/Java一样,单行//
,块注释/* */
数据类型
Number
包括以下形式:
1 |
|
由于js浮点数是按照IEEE754规则,所以有些情况下不能直接比较,需要类似操作:
1 |
|
字符串
和Python类似,可以用''
,或者""
括起来的文本,字符串是不可变的,对字符串修改不会变化
转义相关:
ASCII:
1 |
|
即将16进制转换为对应的字符,如\x41,十进制为65,对应A
UNICODE:
1 |
|
将4byte转换为UNICODE字符中文
多行字符串
ES6新特性:字符串用反引号括起来:
1 |
|
字符串拼接
语法非常自由:
1 |
|
JS可以将不同基本数据类型的变量拼接起来
模板字符串
是ES6新特性,用${var}引用
1 |
|
字符串的方法
参照https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String# 了解更多
布尔值
true,false
条件判断的结果为布尔值:
1 |
|
取反操作:
1 |
|
比较运算符
1 |
|
注意:JS中存在==
和===
,区别:
==
会自动转换类型然后比较,例如1 == true
,结果为true
,但是===
不会转换,结果显然为false
注意NaN,这个值不能用NaN === NaN
判断,会返回false,应该使用isNaN()
函数判断是否为NaN
JS基本的数据类型还有null
和undefined
,如单词含义:一个代表空,一个表示未定义
数组
JS的数组与Python类似,数组的创建方式有:
1 |
|
1 |
|
如果访问数组下标越界,例如arr[15],不会字节报错,而是返回undefined
获取数组长度:
1 |
|
直接给length赋值会改变数组的长度:
1 |
|
直接给越界的下标赋值,不会报错,而是新建到该下标:
1 |
|
获取指定值的index:
1 |
|
1 |
|
数组切片slice():
1 |
|
如果想要复制一个Array:
1 |
|
push和pop:
如字面意思,push可以向arr末尾插入1-N个元素,pop则弹出最后一个元素
1 |
|
unshift和shift:
和push和pop刚好相反,unshift向arr头插入元素,shift则弹出第一个元素
sort:
排序,原地操作,默认升序
1 |
|
如果想要降序:
排序后reverse:
1
2
3var arr = ['B', 'C', 'A'];
arr.sort();
arr.reverse();排序函数(函数表达式写法):
1
2
3
4var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});更简单的方法:
1
2
3var numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b);
console.log(numbers);
反转reverse:
1 |
|
万能方法splice:
1 |
|
concat连接数组:
1 |
|
join连接数组的每一个元素:
1 |
|
对象
JS的对象类似Java的Map,键值对的形式,非常的自由,Value可以是基本数据类型,也可以是数组,但是Key只能用变量名的命名规则:
1 |
|
访问对象:
1 |
|
如果属性名middle-school
不是一个有效的变量,就需要用''
括起来。访问这个属性也无法使用.
操作符,必须用['xxx']
来访问:
变量名命名规则
变量在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$
和_
的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如if
、while
等。
JS的对象是动态的,很自由,可以随意添加删除属性:
如上面的person,可以
1 |
|
判断属性是否存在:
1 |
|
注意使用 in 判断属性是否存在时,对象继承的属性也会存在:
1 |
|
要判断一个属性是否是自身拥有的,而不是继承得到的,可以用hasOwnProperty()
方法:
1 |
|