文章目录
1.快速入门
1.1引入JavaScript
1.内嵌
<script>
alert("hello world");
</script>
2.外部引入:
<script src=".js文件路径"></script>
1.2 数据类型
变量
var
数组
Java的数据必须时相同类型的对象,js中不需要。
//保证代码的可读性,尽量使用 []
var arr = [1,2,3,'hello',null,true];
new Array(1,2,3,'hello',null,true);
取数组下标,如果越界了,就会
undefined
对象
对象是大括号,数组是中括号
每个属性使用逗号隔开,最后一个不需要添加
var person= {
name:"Taoyi",
age:21,
hobby:['basketball','music','read','……']
}
取变量的值
person.name
> "Taoyi"
person.hobby
> (4) ["basketball", "music", "read", "……"]
1.3 严格检查模式
<script>
'use strict';
let i=1;
</script>
2.数据类型
2.1字符串
1.转义字符:
'\u####'-转义Unicode编码
'\x##'-转义Ascii字符
2.多行字符串:
var msg=`
陶毅
nb`
3.模板字符串
let msg=`陶毅
nb`
let message=`你好呀,${msg}`
5.字符串长度
console.log(str.length)
6.字符串的可变性,不可变
7.substring
[ )
截取字符串的时候按下标左开右闭
2.2 数组
1.Array 可以包含任意的数据类型
2.数组长度可变,给arr.length赋值,数组的大小就会发生变化。
3.slice()截取Array的一部分,返回新数组,类似于substring,切片。
4.push(),pop(),数组有栈的特性,栈顶在数组尾部。
5.unshift ( )压栈,shift()弹栈,栈顶在数组头部。
6.数组拼接,concat(),不修改数组,只返回一个新的数组。
7.支持多维数组
2.3 对象
若干键值对
1.对象声明
var 对象名={
属性名:属性值,
属性名:属性值,
属性名:属性值,
属性名:属性值
}
2.动态删除对象里的属性,通过delete
delete person.name
3.动态添加对象的属性,直接给对象的新属性赋值。
4.判断属性值是否在对象中, 属性名 in 对象名
'age' in person
true
5.判断一个属性是否是对象自身拥有,而不是来源于继承,对象名.hasOwnProperty(属性名)
person.hasOwnProperty('toString');
false
person.hasOwnProperty('age');
true
6.遍历数组,for-each循环
var age=[1,2,3,4,9,8,7,6,5];
age.forEach(function(value){
console.log(value);
})
2.4 Map和Set
var map=new Map();
map.set("key","value");
2.5 Iterator
遍历数组、Map、Set
var map =new Map(['time',60],['minute',30]);
for(let x of map){
console.log(x);
}
3.函数
3.1定义函数
定义方式一:
function abs(x){
if(x>=0){
return x;
}
else {
return -x;
}
}
定义方式二:
var abs=function(x){
if(x>=0){
return x;
}
else {
return -x;
}
}
调用函数
参数问题:javaScript 可以传递任意个参数,也可以不传递参数。
假设不存在参数,如何规避?
var abs=function(x){
if(typeof(x)!=='number'){
throw 'not a number';
}
if(x>=0){
return x;
}
else {
return -x;
}
}
arguments关键字
函数调用时传递的所有参数作为一个数组,给arguments
var abs=function(x){
for(let i=0;i<arguments.length;i++){
console.log(arguments[i]);
}
if(x>=0){
return x;
}
else {
return -x;
}
}
rest ——ES6引入的新特性,获取除了已经定义的参数之外的所有参数。
var abs=function(a,b,...rest){
console.log(a);
console.log(b);
console.log(rest);
if(x>=0){
return x;
}
else {
return -x;
}
}
rest 参数只能写在最后面,必须使用…标识
3.2变量的作用域
规范:
由于我们所有的全局变量都会绑定在window上,如果不同的js文件,使用了相同的全局变量,就会冲突。
解决方法:
自定义唯一空间:
var Taoyi={};//唯一全局变量
//定义全局变量
Taoyi.name='Taoyi';
局部作用域 ——let用来定义局部作用域的变量
常量 const
3.3 方法
定义方法
var Taoyi={
birth:2000,
name:'陶毅',
age:function () {
var now=new Date().getFullYear();
return now-this.birth;
}
}
apply
在js中可以控制this的指向
function getage() {
var now=new Date().getFullYear();
return now-this.birth;
}
var Taoyi={
birth:2000,
name:'陶毅',
age:getage()
};
getage().apply(Taoyi,[]);
4. 内部对象
4.1 JSON
JSON ( JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
-
采用完全独立于编程语言的文本格式来存储和表示数据。
-
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
-
易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON中的数据类型
- number:和JavaScript的
number
完全一致; - boolean:就是JavaScript的
true
或false
; - string:就是JavaScript的
string
; - null:就是JavaScript的
null
; - array:就是JavaScript的
Array
表示方式——[]
; - object:就是JavaScript的
{ ... }
表示方式。
JSON 规定字符集必须是UTF-8
在Javascript一切皆为对象,任何js支持的类型都可以用JSON来表示。
- 对象用{}
- 数组用[]
- 键值对用 key:value
JSON字符串和JS对象的相互转化
var user={
name:'Taoyi',
age:21,
sex:'男'
}
//对象转化为json字符串
var Jsoner=JSON.stringify(user);
//json字符串转化为对象
var obj=JSON.parse('{"name":"Taoyi","age":21,"sex":"男"}');