携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情
1、语句和标识符
在html中通过script标签嵌入js语句
声明变量:var
标识符是由:字母、美元符号($)、下划线(_)和数字组成,其中数字不能开头
<script>
var num = 10;
</script>
2、javascript引入方式
1、嵌入到html文件
2、引入本地独立js文件
如
<body>
<script src="./hello.js"></script>
</body>
3、引入网络来源文件
如
<body>
<script src="http://code.jquery.com/jquery1.2.1.min.js"></script>
</body>
\
3、变量
变量声明:var
变量打印:console.log(变量名)
在控制台的console中可以查看
变量提升:JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。
如:
<script>
console.log(num);
var num = 10;
</script>
结果不会报错,但是会提示undefined,因为以上代码实际上等于:
<script>
var num;
console.log(num);
vnum = 10;
</script>
这个现象叫变量提升
4、数据类型
共有6种数据类型:数值、字符串、布尔值、null、对象、undefined
PS:es6新增第七种symblo类型和第八种biglnt类型
字符串类型:
被单引号或双引号包裹的值就是字符串类型
布尔类型:
0:false 1:true
如
var flag = true;
var flag = false;
对象:
也叫做引用数据类型,合成数据类型。复合数据类型,可以包含上述三种原始数据类型
var user{
age:18,
name:"iwen",
hunyin:false,
}
null和undefined代表没有值或者空值。
null一般代表对象为“没有”
undefined一般代表数值为“没有”
5、typeof运算符
可以用来检测数据类型
数值返回number
typeof 123//"number"
字符串返回string
typeof'123//"string"
布尔类型返回boolean
typeof false//"boolean"
对象返回object
typeof{}//"object"
6、算数运算符
6.1布尔运算符取反
!true//false
!false//true
6.2非布尔值取反
对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值都为false。
7、continue语句
continue语句用于立即终止本轮循环,返回循环头部,开始下一轮循环
8、字符串
单引号字符串的内部可以使用双引号。双引号字符串的内部可以使用单引号
如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此
'Did she say 'Hello'?'
//"Did she say 'Hello'?"
"Did she say "Hello"?"
//"Did she say "Hello"?"
8.1charAt方法
返回指定位置的字符,参数是从0开始编号的
var s = new String('itbaizhan');
s. charAt(1)//"t"
s. charAt(s.length - 1)//"n"
如果参数为负数,或大于等于字符串的长度,charAt返回空字符串
8.2concat方法
concat方法用于链接两个字符串,返回一个新字符串,不改变原字符串
var s1 = 'itbaizhan';
vars2 = 'sxt';
s1. concat(s2)//"itbaizhansxt"
s1//"itbaizhan"
该方法可以接受多个参数
'sxt'.concat('itbaizhan','bjsxt')//"sxtitbaizhanbjsxt"
如果参数不是字符串,concat方法会将其先转换为字符串然后再连接
ps
字符串相加可以不用concat,可以直接使用+连接字符串,但是需要注意相加时有可能不是字符串类型导致相加出错,而concat则不用担心这个问题
如
8.3substring
substring 方法用于从原字符串取出子字符串并返回,不改变原字符串。它的第一个参数表示子字符串的开始位置,第二个位置表示结束位置(返回结果不含该位置)
'itbaizhan'.substring(0,2)//"it"
如果省略第二个参数,则表示子字符串一直到原字符串的结束
'itbaizhan'.substring(2)//"baizhan"
如果第一个参数大于第二个参数,substrimg方法会自动更换两个参数的位置
'itbaizhan'.substring(9,2)//"baizhan"
//等同于
'itbaizhan'.substring(2,9)//"baizhan"
如果参数使负数,substring方法会自动将负数转为0
'itbaizhan'.substring(-3)//"itbaizhan"
'itbaizhan'.substring(2,-3)//"it"
8.4 substr
substr方法用于从原字符串取出子字符串并返回,不改变原字符串,跟substring 方法的作用相同
substr方法的第一个参数是子字符串的开始位置(从0开始计算),第二个参数是子字符串的长度
如果省略第二个参数,则表示子字符串一直到原字符串的结束
'itbaizhan'.substr(2)//"baizhan"
如果第一个参数是负数,表示倒数计算的字符位置。如果第二个参数是负数,将被自动转为0,因此会返回空字符串
'itbaizhan'.substr(-7)//"baizhan"
'itbaizhan'.substr(4,-1)//""
8.5indexof
indexof方法用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1,就表示不匹配
' hel1o world'. indexof('o')//4
' itbaizhan'. indexof(' sxt')//-1
indexof 方法还可以接受第二个参数,表示从该位置开始向后匹配
' he11o world'. indexof('o',6)//7
8.6 trim
trim方法用于去除字符串两端的空格,返回一个新字符串,不改变原字符串
' hello world '. trim()
//"hello world"
该方法去除的不仅是空格,还包括制表符(\t、\v)、换行符(\n)和回车符(\r)
'\r\ nitbaizhan \t'. trim()//'itbaizhan'
ES6扩展方法,trimEnd()和trimStart()方法
" itbaizhan ". trimEnd();// itbaizhan
" itbaizhan ". trimstart();//itbaizhan
8.7 split
split方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的****
'it|sxt|baizhan'.split('|')//["it","sxt","baizhan"]
如果分割规则为空字符串,则返回数组的成员是原字符串的每一个字符。
'a|b|c'.split('')//["a","|","b","|","c"]
如果省略参数,则返回数组的唯一成员就是原字符串
'itlsxtlbz'.split()//[itlsxtlbz]
spit方法还可以接受第二个参数,限定返回数组的最大成员数。
'it|sxt|bz'.split('|',0)//[]
'itlsxtlbz'.split('|',1)//["it"]
'it|sxt|bz'.split('|',2)//["it","sxt"]
'it|sxt|bz'.split('|',3)//["it","sxt","bz"]
'it|sxt|bz'.split('|',4)//["it","sxt","bz"]
9、数组
9.1 Array.isArray
ArrayisArray 方法返回一个布尔值,表示参数是否为数组。它可以弥补typeof运算符的不足
var arr=["尚学堂”,100,true];
console.log(typeof arr);//object
var arr=[' sxt',' baizhan','it'];
Array. isArray(arr)//true
9.2push/pop
push方法用于在数组的未端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组
var arr=[];arr.push("尚学堂”)//1
arr.push('itbaizhan')//2
arr.push(true,{})//4
arr//[尚学堂,itbaizhan',true,{}]
pop方法用于删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组
9.3shift
shit方法用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组
shift方法可以遍历并清空一个数组
var 1ist=[1,2,3,4,5,6];
var item;
while(item= list. shift()){
console.log(item);
}
list //[]
unshift方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组
var arr = ['尚学堂','itbaizhan','WEB前端'];
arr.unshift('baizhan');//4
arr//['baizhan','尚学堂','itbaizhan','WEB前端']
9.4 join
join方法以指定参数作为分隔符,将所有数组成员连接为一个字符串返回。如果不提供参数,默认用逗号分隔
var a=[1,2,3,4];
a. join('')//'1234'
a. join('|')//"1|2|3|4"
a. join()//"1,2,3,4"
如果数组成员是undefined或null或空位,会被转成空字符串
数组的join配合字符串的split可以实现数组与字符串的互换
var arr=["a","b","c"];
var myArr=arr. join("");
console.log(myArr); //转字符串
console.log(myArr. split(" "));//转回数组
9.5concat
concat方法用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变
['he11o'].concat(['world'])
//["hello","world"]
['he11o'].concat(['world'],['!'])
//["hello","world","!"]
除了数组作为参数,concat也接受其他类型的值作为参数,添加到目标数组尾部。
[1,2,3].concat(4,5,6)
//[1,2,3,4,5,6]
应用场景:上拉加载,合并数据
9.6reverse
reverse 方法用于颠倒排列数组元素,返回改变后的数组。注意,该方法将改变原数组
var a=['a','b','c'];
a. reverse()//["c","b","a"]
a//["c","b","a"]
9.7 indexof
indexof方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1
var arr=['a','b','c'];
arr. indexof('b')//1
arr. indexof('y')//-1
indexof方法还可以接受第二个参数,表示搜索的开始位置
['尚学堂','百战程序员','itbaizhan'].indexof('尚学堂',1)//-1
10、函数
function 命令:
function命令声明的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。
function print(s){
console.1og(s);
}
函数名提升:
JavaScript引擎将函数名视同变量名,所以采用function命令声明函数时,整个函数会像变量声明一样,被提升到代码头部
add();
function add(){}
函数返回值:
JavaScript函数提供两个接口实现与外界的交互,其中参数作为入口,接收外界信息;返回值作为出口,把运算结果反馈给外界
function getName(name){
return name;
}
var myName=getName("itbaizhan")
console.log(myName);//itbaizhan
ps:return后面不能再加任何代码,因为不会生效
11、对象
对象是一组键值对(key-value)的集合,是一种无序的复数数据集合
var user = {
name:'itbaizhan',
age:'13'
}
对象的每一个键名又称为“属性”(property),它的“键值”可以是任何数据类型。如果一个属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用
var user={
name:"itbaizhan",
age:13,
jobs:["itbaizhan","sxt"],
flag: true,
getName: function(){
console.1og("iwen");
}
container:{
frontEnd:"WEB前端",
backEnd:["python","java"]
}
}
function getName(){}
//链式调用
console.log(user.container.frontEnd);
\
11.1数学对象
Math是JS的原生对象,提供各种数学功能
11.1.1math.abs()
返回参数值的绝对值
Math.abs(1)//1
Math.abs(-1)//1
11.1.2math.max(),math.min()
Math.max方法返回参数之中最大的那个值,Math.min返回最小的那个值。如果参数为空,Math.min 返回Infinity,Math.max 返回-Infinity。
Math. max(2,-1,5)//5
Math. min(2,-1,5)//-1
Math. min()//Infinity
Math. max()//-Infinity
11.1.3Math.floor,Math.ceil(),Math.round()
Math.floor 方法返回小于参数值的最大整数
Math.ceil 方法返回大于参数值的最小整数
Math.round 方法返回参数值四舍五入的整数
Math.floor(3.2)//3
Math.floor(-3.2)//-4
Math.ceil(3.2)//4
Math.ceil(-3.2)//-3
11.1.4Math.random()
Math.random()返回0到1之间的一个伪随机数,可能等于0,但是一定小于1
console.log(Math.random());
任意范围的随机数生成函数如下:
function getRandomArbitrary(min, max){
return Math. random()*(max-min)+min;
}
getRandomArbitrary(5,10)
11.2Date对象
Date 对象是JavaScript原生的时间库。它以1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天(单位为毫秒)
11.2.1Date.now()
Date.now 方法返回当前时间距离时间零点(1970年1月1日00::00:00 UTC)的毫秒数,相当于Unix时间戳乘以1000
Date.now();//1635216733395
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在
的总秒数。
格林威治和北京时间就是时区的不同
Unix是20世纪70年代初出现的一个操作系统,Unix认为1970年1月1日0点是时间纪元。JavaScript也就遵循了这一约束
new Date( ):获取最新时间
11.2.2get系列方法
var d=new Date(' January 6,2022');
d. getDate()//6
d. getMonth()//0
d. getYear()//122
d. getFu1lYear()//2022
编写函数获得本年度剩余天数:
function leftDays(){
var today=new Date();
var endYear=new Date(today. getFullYear(),11,31,23,59,59,999);
var msPerDay=24*60*60*1000;
return Math. round((endYear. getTime()-today. getTime())/msPerpay);
}