JavaScript细讲
Posted 史小鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript细讲相关的知识,希望对你有一定的参考价值。
JavaScript(二)细讲
数据类型
-
字符串:
-
正常字符串用单引号或者双引号包裹
-
注意转义字符\\
- \\x41 Ascll字符
- \\u...... Unicode字符
-
\'use strict\'; let str="abcde" str.length//长度
-
截取字符串
str.substring(1)//从第一个字符串截取到最后一个字符串 str.substring(1,3)//[1,3)
-
字符串是不可变值
-
大小写转换
属性名.toUpperCase() 属性名.toLowerCase()
-
查找位置:
属性名.indexOf(字符) student.indexOf(\'t\')
-
\'use strict\'; let str="abcde" str.length//长度
-
数组Array
-
可以包含任意数据类型
-
indexOf通过元素获得下标索引
-
slice()截取Array的一部分,返回一个数组,类似于substring
-
push()压入尾部,pop()弹出尾部
-
unshift()压入头部,shift()弹出头部
-
排序:sort()
数组名.sort()
-
元素反转:reverse()
-
concat(a),在 数组中插入数组a并返回插入后的数组
-
连接:join
arr=[\'c\',\'b\',\'a\']
arr.join(-)
"c-b-a"
-
多维数组
arr=[[1,2],[0,5],["5","s"]] arr[1][1]//5
对象
-
var 对象名= 属性名:属性值, 属性名:属性值, 属性名:属性值
-
对象赋值
-
person.age=20
-
//动态删除属性 delete person.name //添加属性(和添加值) person.ss="123"
-
//in属性值是否存在对象中(父类方法也算) \'age\' in person//true //判断属性是否在对象中 person.hasOwnProperty(\'age\')
流程控制
-
var age=3 if(age>3) alert("1"); else(age>0) alert("2"); else alert("3");
-
while(true) alert(3); for(let i=0;i<5;i++) alert(i); do age=age-10; alert(age); while(age<0);
-
var age=[1,2,3,4,5,2,4,6] for(var num in age) if(age.hasOwnProperty(num)) console.log("存在"); console.log(num);
Map和Set
-
var map=new Map([["张三",18],["李四",19],["王五",20]]); var name=map.get("李四")//通过key获取value map.set("赵六",30);//新增或修改 map.delete("李四");//删除
-
Set:无序不重复的集合
-
Set可以去重
var set=new Set([3,1,1,1,1,1]); set.add(2);//添加 set.delete(1);//删除 console.log(set.has(3));//是否包含某个元素
iterator迭代
var a=[3,4,5];
for(var x of a)
console.log(x);
var map=new Map([["张三",18],["李四",19],["王五",20]]);
for(let x of map)
console.log(x);//输出所有(包括键和值)
var set=new Set([5,6,7]);
for(let x of set)
console.log(x);
函数
定义方式1
绝对值函数
function abs(x)
if(x>=0)
return x;
else
return -x;
一旦执行到return代表函数结束
如果没有执行return,函数执行完也会返回结果(返回undefined)
定义方式2
//定义
var abs=function(x)
if(x>=0)
return x;
else
return -x;
匿名函数
-
没有函数名,但是可以把结果赋值给abs(像上面一样),通过abs就可以调用函数
-
function(x)
-
如果不存在参数,可以手动抛出异常
var abs=function(x) if(typeof x!="number") throw \'Not a Number\' if(x>=0) return x; else return -x;
arguments
代表传递进来的所有参数,是一个数组
rest
获取已经定义的参数之外的所有参数
function aaa(a,b,...rest)
console,log("a:"+a);
console,log("b:"+b);
console.log(rest)
rest参数只能写在最后面,必须用...标识
变量
var在函数体内声明,在函数体外不可使用
内部函数可以访问外部函数的成员
如果两个函数使用相同的变量名,只要在函数内部,就不冲突
function a1()
var x=1;
x=x+1;
function a2()
var x=\'A\';
x=x+1;
函数查找变量从自身函数开始,由内向外查找
在js里,所有的变量最好统一定义到最前面
全局函数和变量
//全局变量
var x=1;
function f()
console.log(x);
f();
alter()这个函数本身也是window变量,也可以被用来赋值
全局变量都绑定在window里面
方式1
将全局变量绑定到其他上面
把自己的代码全部放到自己定义的唯一空间中,降低全局命名冲突
//全局变量,放到f里面
var f=;
f.name=1;
//全局变量,函数也算
f.add=function(a,b)
return a+b;
方式2(建议)
使用let定义局部变量,解决局部作用域冲突的问题
常量
ES6之后:
const定义常量(建议)
const PI=3.14
ES6之前:
只有用全部大写字母命名的变量就是常量
方法
定义方法
把函数放在对象的里面,对象只有两个东西:属性和方法
调用方法一定要带括号
var sxp=
name:"sxp",
bitrh:2020,
//方法
age:function ()
var now=new Date().getFullYear();
return now - this.bitrhh;
//属性
sxp.name
//调用方法一定要带括号
sxp.age()
this
在js中,可以控制this的指向
通过apply
//方法
function getAge()
var now=new Date().getFullYear();
return now - this.bitrhh;
var sxp=
name:"sxp",
bitrh:2020,
age:getAge()
//将getAge()里面的this定向为sxp上面
getAge.apply(sxp,[]);//对象,参数(因为不用参数所以是[])
//属性
sxp.name
//调用方法一定要带括号
sxp.age()
内部对象
标准对象
var now =new Date();
now.getFullYear();//获得年
now.getMonth();//月
now.getDate();//日
now.getDay();//星期几
now.getHours();//时
now.getMinutes();//分
now.getSeconds();//秒
now.getTime();//时间戳
JSON
-
一种轻量级数据交换的格式
-
格式:
- 对象用
- 数组用[]
- 所有的键值对都是用key:value
-
转换
var user= name:"sxp", age:3, sex:"男" //对象转化为json字符串name:"sxp",age:3,sex:"男" var jsonUser=JSON.stringify(user); //json转化为对象,参数为json字符串 var obj=JSON.parse(\'name:"sxp",age:3,sex:"男"\');
-
JSON和JS区别
var obj=a:"hello",b:"hellob"//js var json="a":"hello","b":"hellob"//json
Ajax
- 原生js写法 xhr异步请求
- jQuey封装好的方法$("#name").ajax()
- axios请求
以上是关于JavaScript细讲的主要内容,如果未能解决你的问题,请参考以下文章