ES5:严格模式
ES5:ECMA语法规范的第五个版本—兼容性最好的。
ES6:强弱语言。
严格模式是js的一种语法,使用这种语法,就开启了严格模式。
全局开启严格模式,可以规范全局的代码;局部开启严格模式,不能约束全局代码。
开启严格模式
'use strict'
'use strict' //全局开启严格模式
function fn(a,a){
console.log(a+a)
}
//会报错,严格模式下,参量不能同名
严格模式的规范
1、不允许省略var定义变量
2、不允许函数形参同名
3、不允许普通函数中的this代表window(报underfined)
严格模式的好处
1、让我们的代码更加规范
2、运行效率更高,消除了一些不必要的影响
this关键字的5种使用场景
1、可以全局使用,代表浏览器窗口window
console.log(this);
2、普通函数中使用,也代表浏览器窗口window
function fn() {
console.log(this);
}
fn()
3、自调用函数中使用,也代表浏览器窗口window
(function(){
console.log(this);
})()
4、在事件中处理程序的函数中可以使用,–代表当前事件触发的事件源
an.onclick = function(){
console.log(this)
}
5、对象方法使用,代表当前方法的所在的对象
var ob={
name:'张三',
age:12,
play:function(){
}
}
ob.play()
字符串
以前也简单提过一下字符串,现在了解一下字符串的方法,字符串也跟数组一样可以有下标,以为可以遍历。
根据下标查找数据
var a='ahafakflajf'
console.log(a[1]) //h
console.log(a[2]) //a
原来的字符串,不能被修改
var a='ahafakflajf'
a[0]='e'
字符串长度有长度用length获取
var a='ahafakflajf'
console.log(a.length)
遍历字符串翻转输出
var str='ajlas1dk'
var block='' //空字符串
for(var i=str.length-1;i>=0;i--){
block+=str[i]
}
console.log(block)
字符串比较
1、逐字符比较,字符大小由阿斯克码决定的
2、 排在后面的字母更大,小写字母比大写字母更大,字母比数字更大
//取出第一个字符比较大小,相等就各自的第二个字符比较大小
console.log('2'>'19') //true
//根据ACS11码(128个)比较大小
console.log('a'>'b') //false
//汉字比较,由Unicode码决定
console.log('我'>'你') //true
ASCII对照表
相应ASCII码:
0-9:48~57
A-Z:65~90
a~z:97~122
字符串方法
-
charAt(下标):通过下标获取指定的字符
var str = 'abcdfg' console.log( str.charAt(2) ); //c
-
charCodeAt(下标) :通过下标获取对应ACS11码
var str = 'abcdfg' console.log( str.charCodeAt(2) ); //97
-
string.fromCharCode(ASCII): 获取ASC11对应的字符
var str = 'abcdfg' console.log( str.string.fromCharCode(97) ); //a
-
indexof:指定从哪个字符开始查找他第一次出现的的下标
var str = 'abcdfg' console.log(str.indexof(a)); //0 console.log(str.indexof(1)); //没找到-1
-
lastIndexof:查找字符最后一次出现的下标
var str = 'afbcdfcg' var str2 = str.lastIndexOf('f') console.log(str2); //5
-
slice(开始下标,结束下标):截取字符串
var str="adagegehjjdavav" //负数,从后面往前数 var str2=str.slice(-1,-2) console.log(str2) //v
-
split(分隔符):将字符串以指定的分隔符分割字符串成数组
var str = 'abcadfag' console.log( str.split('a') ); //每个元素都不包含指定的分隔符字符
效果:
var str = 'abcadfag' console.log(str.split('a',1)); //1表示保留个数
效果:
-
trim 去两端空白
var str = ' abcdfg ' console.log( str.trim() ); //'abcdfg'
-
trimLeft 去左边空白
var str = ' abcdfg ' console.log( str.trimLeft() ); //'abcdfg '
-
trimRight 去右边空白
var str = ' abcdfg ' console.log( str.trimRight()); //' abcdfg'
-
toUpperCase:字符串中所有字符转成
大写字母
var str = 'abcgA' console.log( str.toUpperCase()); //ABCGA
-
toLowerCase:字符串中所有字符转成
小写字母
var str = 'ABCdd' console.log( str.toLowerCase()); //abcdd
-
replace(被替换,替换的内容):把字符串中指定的部分替换成新内容
var str = 'hi,boy' var str1 = str.replace('boy','girl') console.log(str1);
-
substr(开始下标,截取长度):截取字符串,返回截取出来的字符串
var str = 'ABCddaadafafavssds' console.log( str.substr(2,4)); //Cdda console.log( str.substr(2)); //Cddaadafafavssds 第二个数没有,默认截取到结尾
-
subString(开始下标,结束下标) substring 用负数表示下标,会转成0
var str = 'ABCddaadafafavssds' console.log( str.subString(2,4)); //Cdd (包前不包后) console.log( str.subStringr(2)); //Cddaadafafavssds 第二个数没有,默认截取到结尾
数字处理(Math)
Math是js内置的一个对象
math属性
// 圆周率
console.log(Math.PI)
math方法:
获取随机数random
console.log( Math.random() ) //1以内的随机数
获取0-10之间的随机数
var sum =Math.random()*10
console.log(sum);
获取0-100之间的随机数
var sum =parseInt(Math.random()*100)
console.log(sum);
获取20-120之间的随机数
var sum =parseInt(Math.random()*100)+20
console.log(sum);
获取20-100之间的随机数
var sum =parseInt(Math.random()*80)+20
console.log(sum);
获取指定范围的随机数
// 封装
function rad(a,b){
return parseInt(Math.random()*(b-a))+a
}
var a=rad(20,30) //30 40 不能 40 30
console.log(a)
// 优化
function rad(a,b){
var max=a
var min =b
if(b>a){
max=b
max=a
}
return parseInt(Math.random()*(max-min))+ min
}
var a=rad(30,20)
console.log(a)
向上取整: Math.ceil(要取整的数字)
var a=3.333
console.log(Math.ceil(a)) //4
向下取整:(只舍弃不是入):Math.floor(要取整的数字)
var a=3.56
console.log(Math.ceil(a)) //3
四舍五入 :结果为整数: Math.round(要取整的数字)
var a=3.56
console.log(Math.round(a)) //4
绝对值 Math.abs
var a=-2.24
console.log(Math.abs(a)) //2.24
求次方 Math.pow(底数,幂数)
var num = Math.pow(3, 2) //3的2次方
console.log(num); //9
开根号:Math.sqrt()
var num = Math.sqrt(4)
console.log(num); //2
最大值 :Math.max()
var a = Math.max(0,3,24,2)
console.log(a)
最小值: Math.min()
var a = Math.min(0,3,24,2)
console.log(a)
正弦: Math.sin(x)
函数返回一个数值的正弦值。x:一个数值(以弧度为单位)
Math.sin(Math.PI / 2); // 1
余弦:Math.cos(x)
函数返回一个数值的余弦值。x:一个数值(以弧度为单位)
Math.cos(Math.PI); // -1
Math.cos(2 * Math.PI); // 1
日期时间Data()
创建日期对象
var data=new Date()
console.log(data) //获取现在时间,输出字符串
获取时间日期
语法:
时间对象.get[年/月/日]()
例子:date.getFullYear()
获取年份 getFullYear()
var data=new Date()
var year = date.getFullYear()
console.log(year);
获取月份 getMonth()
var data=new Date()
var month = date.getMonth()
console.log(month);
//后面也是这样获取,也不重复了
获取日 getDate()
获取星期 getDay()
获取时 getHours()
获取分钟 getMinutes()
获取秒 getSeconds()
获取毫秒 getMilliseconds()
获取时间戳 getTime()
设置时间
语法:
时间对象.set[年/月/日](参数)
例子:date.setFullYear(2024)
设置年 setFullYear()
var date = new Date() // 获取到当前时间对象
console.log(date);
date.setFullYear(2024)
console.log(date);
设置月 setMonth() 注意:0-11表示12个月
//接上面获取当前时间对象
var date = new Date() // 获取到当前时间对象
console.log(date)
date.setMonth(7) //8月
//后面也是一样设置就不重复了
设置日 setData()
设置时 setHours()
设置分 setMinutes()
设置秒 setSeconds()
设置毫秒 setMilliseconds()
设置时间戳 setTime()
创建日期对象里的参数
字符串参数
var data =new Date('2022-10-1 08:59:01');
consolelog(data)
数字参数: 月份要比实际小一
var data =new Date(2022,10,1,8,59,1);
consolelog(data)
时间戳参数:
var data =new Date(0);
consolelog(data)
获取时间戳
1、时间日期对象.getTime()
2、在new前面放+
var data =+new Data()
console.logo(data)
3、在构造函数中,
var a=function parse('2022-3-18 23:13:01')
console.logo(a)
格式化输出时间
//获时间对象
var data = new Date()
// 格式化整个年月日时分秒
var str=data.toLocaleString()
console.log(str);
// 格式化年月日
var str1=data.toLocaleDataString()
console.log(str1);
// 格式化时分秒
var str2=data.toLocaleTimeString()
console.log(str2);
热感冒加鼻炎,太难受。就继续复习吧,加油。