一、JavaScript介绍
1、JavaScript 书写位置
1、内部 JavaScript
直接写在html文件里,用script标签包住[规范:script标签写在<body>上面]
<body>
<script>
alert("hellp")
</script>
</body>
2、 外部 JavaScript(js文件多的时候)
代码写在以.js结尾的文件里建立并通过script标签,引入到html页面中;
<body>
<!-- 通过src进入外部文件js -->
<script src=".jx"></script>
</body>
3、 内联 JavaScript
代码写在标签内部
<script>
<button onclick="alert()"></button>
</script>
2、JavaScript 的注释 与结束符
<body>
<script>
//单行注释;一次只能注释一行,可以多次注释 快捷键:ctrl + /
/* 多行注释可以任意换行多少行都可以 快捷键:shift + alt + A */
</script>
</body>
结束符:是;分号,可以省略
3、JavaScript的输入和输出语法
<body>
<script>
//输出语法
//语法一
document.write('要输出的内容')//向body内输出内容
//如果输出的内容写的是标签,也会被解析成网页元素,如
document.write('<h1>要输出的内容</h1>')
//语法二
alert('要输出的内容')//作用:页面弹出警告对话框
//语法三
console.log("控制台")//控制台输出语法,程序员调试使用
//输入语法
prompt('想要输入的')//会弹出弹窗
</script>
</body>
执行顺序,按照html文档里进行顺序,但是alert跟prompt优先执行
二、JavaScript的变量
1、变量的介绍
变量就是计算机用来存储数据的“容器”;注意变量指的是容器不是数据
2、变量的使用
<body>
<script>
// 1、声明标量;
// 语法:let 变量名
/* 举例:*/ let a
// 2、变量赋值:定义完一个变量后在变量名后加一个“=”
/* 举例:*/ a=10
// 3、声明变量时直接赋值
/* 举例:*/ let b=100
// 4、更新变量:变量赋值后,给他一个不同的值类更新他
/* 举例:*/let age=18
age=19 //但是let不能多次声明一个变量
// 5、声明多个变量:之间用,号隔开;但是不推荐,可读性比较低
/* 举例:*/ let p=10,o=100
</script>
</body>
3、变量命名规则
1、不能用关键字
2、只能用下划线、字母、数字、$组成,且数字不能开
3、字母严格区分大小写,如 Age 和 age 是不同的变量
4、变量-数组
<script>
1、声明数组
let 数组名=[数组1,数组2,数组3,。。。,数组n]
//数组的编号也就是索引或者下标从0开始,以此类推
2、取值语法
数组名[下标]
例如:let 数组名=[数组1,数组2,数组3,。。。,数组n]
数组名[1]
document.write(数组名[1])//也就是打印结果为‘数组2’
3、数组中数据的个数
利用length来求数据的个数(长度); 例如:
let 数组名=[数组1,数组2,数组3]
console.log(数组名.length); //也就是三个
</script>
三、JavaScript的常量
1、概念:利用 const 声明的变量称为“常量”
2、常量不允许重新赋值,声明的时候必须赋值(初始化),并且后续不能更改
<script>
例如:const a=1
a=3//此处就没用
</script>
四、数字数据类型和算术运算符
1、数字类型(Number)
正数、负数、小数等 统一称为 数字类型
<script>
NaN 代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果
例如: console.log('你好'-2) //此处就会返回NaN
任何对 NaN 的操作都会返回 NaN
列如:console.log(NaN-2) //返回NaN
</script>
2、算术运算符
主要包括加+、减-、乘*、除/、取余(求模)%
3、字符串类型(string)
通过单引号( '') 、双引号( "")或反引号( ` ) 包裹的数据都叫字符串
<script>
let a = '小明' //使用单引号
let b = "小明" //使用双引号
let c = `小明` //使用反引号
let number ='123456' //把数字变成了字符串
let st ='' //空字符串
</script>
注意事项:
1、无论单引号或是双引号必须成对使用
2. 单引号/双引号可以互相嵌套,(口诀:外双内单,或者外单内双)
3. 必要时可以使用转义符 \,输出单引号或双引号
4、字符串拼接
数字相加,字符相连
<script>
document.write('我'+'你') //输出 我你
let a='ni',b='我'
document.write(a+b) //输出ni我
</script>
5、模板字符串
用在拼接字符串和变量 (普通拼接太麻烦)
语法:外部用``反引号;用${}包住使用变量
<script>
let name = prompt("请输入您的姓名"), age = prompt("请输入您的年龄")
document.write(`大家好,我是${name},我今年${age}岁`)
</script>
6、布尔类型(boolean)
它有两个固定的值 true 和 false,表示肯定的数据用 true(真),表示否定的数据用 false(假)
7、未定义类型(undefined)
只声明变量,不赋值的情况下,变量的默认值为 undefined
<script>
let a //声明变量但是未赋值
document.write(a) //输出undefined
</script>
8、null(空类型)
<script>
null 仅仅是一个代表“无”、“空”或“值未知”的特殊
let obj = null
console.log(obj); //null
</script>
9、null 和 undefined 区别
undefined 表示没有赋值
null 表示赋值了,但是内容为空
10、检测数据类型
通过 typeof 关键字检测数据类型
语法:1. 作为运算符: typeof x
2. 函数形式: typeof(x)
<script>
let a = '1'
console.log(typeof a); //运行结果为string
</script>
五、类型转换
使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算
1、隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换
规则:+ 号两边只要有一个是字符串,都会把另外一个转成字符串
除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型
+号作为正号解析可以转换成数字型
任何数据和字符串相加结果都是字符串
<script>
console.log('你好' + 2)//输出为 你好2
console.log('11' + 11);//输出为 1111
console.log('11' - 11);//输出为 0
console.log('1' * 2);//输出为 2
console.log(typeof '123');//输出为 string
console.log(typeof +'123');//输出为 number
console.log(+'11' + 11);//输出为 22
</script>
2、显式转换
自己写代码告诉系统该转成什么类型;第一个字母都要大写
转换为数字型
方法:1、Number(数据)--如果字符串内容里有非数字,转换失败时结果为 NaN
2、parseInt(数据)--只保留整数
3、parseFloat(数据)--可以保留小数
<script>
let str ='1234'
console.log(Number(str));//转换为数字类型
</script>
4、为Boolean型转换
语法:
Boolean(内容)
console.log(Boolean( 3));//输出为ture
console.log(Boolean( undefined));//输出为false
记忆: ‘’、0、undefined、null、false、NaN 转换为布尔值后都是false, 其余则为 true
转换为字符型: String(数据)
六、运算符
1、赋值运算符
‘=’赋值将等号右边的值赋予给左边, 要求左边必须是一个容器
其他赋值:+=;-= Ø;*= ; /= ; %=; 相当于num=num+1等于num+=1
2、自增自减运算符
自增:i++或者++i;自减:i--或者--i(通常使用在计数中)
<script>
1、 前置自增、自减
let a = 1, b = 1
console.log(++a + 2);//先给num加一再使用;结果为4
console.log(--b + 2);//先num减去一再使用,结果为2
2、 后置自增、自减
let c = 1, d = 1
console.log(c++ + 3);//先使用num再加一;结果为4
console.log(d-- + 3);//先使用num再减一;结果为4
</script>
注意:前置自增自减和后置自增独立使用时二者并没有差别!
面试题:
<script>
let i = 1
console.log(i++ + ++i + i);//结果为7
/* 解释:i先使用一次,把使用完后的值给第二个i使用,再把使用完后的给第三个使用
也就是i++是1,使用完后i=2,再把i=2给++i使用,使用后i=3,最后使用i+3
式子也就是:1 +3 +3*/
</script>
3、比较运算符
浮点数(小数)不参加比较,因为精度不好控制
字符串比较是比较的字符对应的ASCII码
注意:
<script>
1、比较运算符有隐式转换, 把‘2’ 转换为2.双等号只判断值
console.log(2 == '2');//答案是true
2、=== 全等判断要求 值和 数据类型都一样才行
console.log(2 === '2');//结果是false
3、NaN 不等于任何人包括他自己
console.log(NaN === NaN);//结果是false
三种区别:
= 是赋值
== 是判断 只要求值相等,不要求数据类型一样即可返回true
=== 是全等 要求值和数据类型都一样返回的才是true
</script>
4、逻辑运算符
5、逻辑中断
alert(11&&22)//都是真,返回最后一个真值
alert(11||22)//都是真,输出第一个真值
alert(false && 22) //第一个错误直接输出错误值
alert(false || 22)//第一个错了第二个对的,打印第二个对的
6、条件运算符
<script>
条件运算符“?”是一个三目;
语法: 表达式1 ? 结果1: 结果二
先分析表达式一的值,如果值为真,则执行结果一,如果为假则执行结果二
let a = 10, b = 67, c
c = a > b ? '你好' : '帅哥'
alert(c)//运行结果为 帅哥
</script>
7、运算符优先级
七、判断语句
1、表达式和语句
<script>
表达式是可以被求值的代码
如: x = 7 ;3 + 4;num++
语句是一段可以执行的代码。
如: prompt() 可以弹出一个输入框,还有 if语句 for 循环语句等等
</script>
表达式:因为表达式可被求值,所以它可以写在赋值语句的右侧。
语句:而语句不一定有值,所以比如 alert() for和break 等语句就不能被用于赋值。
2、分支语句
1、If分支语句
<script>
//除了0以外所有的数字都为真
//所有的空字符串都为真‘ ’
1、if语句的单分支使用语法
if(条件){//括号内的条件为真时,才能进入大括号里执行代码
满足条件要执行的代码
}
2、if语句的双分支使用语法
if (条件) {
满足条件要执行的代码
} else {
不满足if条件执行的代码
}
3、多分支if语法
if (条件1)// 先判断条件1,若满足条件1就执行代码1,其他不执行
{
代码1
}else if(条件2){// 若不满足则向下判断条件2,满足条件2执行代码2,其他不执行
代码2
}else if(条件n)
{
代码n
}else{//若以上条件都不满足,执行else里的代码n
当以上代码都不运行时,运行此代码
}
</script>
2、三元运算符 (三个操作数)
<script>
语法: 条件? 满足条件执行的代码:不满足条件执行的代码
如:判断输入的数字的最大值
let num1 = +prompt("请输入第一个数")
let num2 = +prompt("请输入第二个数")
let sum = num1 > num2 ? num1 : num2
alert(`最大值为${sum}`)//${}表示占位引用
</script>
3、switch语句
<script>
语法://找到跟小括号里数据全等(===)的case值,并执行里面对应的代码
switch (数据){//必须存在break不然不会结束,会打印所有
case 值1:
代码1
break
case 值2:
代码2
break
default:
代码n
break
}
</script>
八、循环语句
1、while循环
<script>
语法:
while(循环条件){
要重复进行的代码(循环体)
}
</script>
三要素:1、变量起始值
2. 终止条件(没有终止条件,循环会一直执行,造成死循环)
3. 变量变化量(用自增或者自减)
<script>
let i = 1 //变量起始值
while (i <= 10) {//终止条件(没有终止条件,循环会一直执行,造成死循环)
document.write("要打印十次<br>")
i++//变量变化量(用自增或者自减)
}
</script>
2、do—while循环 (不常用,基本不用)
区别于其他的循环主要特点是。意味着循环体将会无条件的执行一次
<script>
语法:
do{
执行语句
}while (循环条件)
</script>
3、for循环
<script>
语法:
for (变量初始值; 终止条件; 变量变化量) {
循环体
}
</script>
</body>
4、 循环退出
break:退出整个循环
continue:结束满足本次条件的循环,继续下次循环
5、无限循环
1、while(true) 来构造“无限”循环,需要使用break退出循环。
2、for(;;) 也可以来构造“无限”循环,同样需要使用break退出循环。
6、for循环嵌套
<script>
语法:
for (外部声明记录循环次数的变量; 循环条件;变化值) {
for(内部声明记录循环次数的变量; 循环条件;变化值){
循环体
}
}
</script>
九、数组
1、数组的基本使用
1、声明语法
let 数组名 = [数据1,数据2,...数据n]
数组的顺序编号是从0开始的
2、取值语法
数组名[下标]
如:let name = ['22','33','55']
name[0]//输出22
3、 数组长度
数组中数据的个数为数组的长度,通过数组的length属性获得
如:name.length//name的数组的长度就为3
4、遍历数组 (重点)
用循环把数组中每个元素都访问到
<script>
for(let i =0;i<数组名.length;i++){
数组名[i]
}
例如:
let nums = [10, 20, 30, 40, 50]
for (let i = 0; i < nums.length; i++) {
document.write(nums[i])//依次打印数组里面的内容
}
</script>
2、操作数组
1、操作数组-修改
语法:
<script>
let arr = [1, 2]
arr[0] = 3
alert(arr)//3,2修改了元素
arr[1] = arr[1] + "你好"
alert(arr)//3,2你好
</script>
2、 操作数组-新增
<script>
1、数组名.push() 将一个或多个元素添加到数组的末尾,并返回该数组的新长度
语法: arr.push(元素1,元素2,....,元素n)
例如: let arr = ['red', 'green']
arr.push('pingk')
alert(arr);//打印red,green,pingk
alert(arr.push('pingk'))//直接显示提添加后的数组长度
2、数组名.unshift() 将一个或多个元素添加到数组的开头,并返回该数组的新长度
语法: arr.unshift(元素1,元素2,....,元素n)
let a = ['ll', 'o', 'world']
a.unshift('he')
alert(a)//he,ll,o,world
alert( a.unshift('he'))//输出长度,输出添加后的新长度
</script>
3 、操作数组-删除
<script>
1、数组.pop()从数组中删除最后一个元素,并返回该元素的值
语法: arr.pop()
例如:
let arr=['red','gren']
arr.pop()//每次删除最后的一个
alert(arr)//red
2、数组.shift()从数组中删除第一个元素,并返回该元素的值
语法: arr.shift()
例如:
let arr=['red','gren']
arr.shift()//每次开始的第一个
alert(arr)//gren
3、数组.splice() 删除指定元素
语法:arr.splice(start(起始位置),deletecount(删除几个元素))
例如:
let arr=['red','gren','bule']
arr.splice(1,2)//从下标1开始删除俩,也就是gren和bule被删除了
alert(arr)//red
</script>
4、数组排序
<script>
数组.sort()
语法:
1、顺序
arr.sort(function(a,b)){
return a-b
}
2、降序
arr.sort(function(a,b)){
return b-a
}
例如:
let arr = [1,2,4,5,3]
arr.sort(function(a,b)){
return b-a}
alert(arr)//12345
</script>
十、函数
1、函数的使用
1、函数使用语法:
function 函数名(){
函数体
}
2、函数的调用语法
函数名()
注意:声明(定义)的函数必须调用才会真正被执行,使用 () 调用函数
2、 函数传参
1、声明语法:
//声明语法中的参数列表是形参
function 函数名(参数列表){
函数体
}
2、调用语法:
//调用语法中的参数列表是实参
函数名(传递的参数列表)
注意:1、多个函数传递参数时,括号里面要加逗号分隔两个参数
2、 形参不给值,默认是undefined
3、出现 undefined + undefined 结果NaN
3、用户不输入实参,可以给 形参默认值,可以默认为 0, 这样程序更严谨
例如
function getsum(x=0,y=0){
alert(x+y)
}
getsum()//结果时0,而不是NaN
getsum(1,2)//结果是3
3、函数的返回值
语法:
return 数据
1、 使用方法:例如:
function getSum(x, y) {
return x + y
}
let num = getSum(10, 20)
document.write(num)
2、返回多个值
语法: return [a, b]
实例: //以最大值最小值为案例
function getSum(arr = []) {
let max = arr[0]
for (let i = 0; i < arr.length; i++) {
if (arr[i] > max) { max = arr[i] }
}//上述为最大值
let min = arr[0]
for (let i = 0; i < arr.length; i++) {
if (arr[i] < min) { min = arr[i] }
}//上述为最小值
return [max, min]}
使用多个返回值
let newArr = getSum([1, 2, 2, 34, 4, 5, 6])
document.write(newArr)//打印返回的整个数组
document.write(`最大值为${newArr[0]},最小值为${newArr[1]}`)//打印所用到的数组数据信息
4、函数使用注意点
1、定义了两个相同的函数,后面的函数会覆盖前面的;如:
function fn() { alert(2) }
function fn() { alert(3) }//只会打印后面的3
2、参数不匹配
function fn(x, y) { alert(x + y) }
//(1)实参多于形参,剩下的实参不参加运算
fn(3, 4, 5)//只会计算前两个4+3=7
//(2)实参少于形参
fn(3) //结果就是 1 + undefined = NaN
3、 return 后面代码不会再被执行,会立即结束当前函数,所以 return 后面的数据不要换行写;如:
function fn(x, y) {、
return
x + y
}//输出的化结果为undefined
5、函数的作用域
分为全局变量和局部变量
1、作用域
let num = 10 //全局变量
function fn(){
let str = 'nihao '//局部变量
2、注意:如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐;例如:
function fn(){
num=10 //局部变量来看强烈不允许
fn()
console.log(num)}
3、 形参可以看做是函数的局部变量;如:
function fun(x,y){
console.log(x)
fun(1,2)
console.log(x) //此时使用x的化会报错因为局部变量不能够被使用
4、访问原则:采取就近原则的方式来查找变量最终的值;例如:
let num= 10
function fn(){let num = 20
function fun(){
letrnum = 30
console.log(num)}
fun()}
fn()//输出结果为30
6、匿名函数
1、函数表达式
声明语法:
let fn = function(){//定义
函数体
}
调用:
fn()//函数表达式,必须先声明函数表达式,后调用
普通的定义可以使用在定义,但是匿名函数必须声明才能使用
2、立即执行函数
语法:
(function () { alert(11) })();
最前面的括号相当于声明,最后的括号相当于调用
(function (形参) { 函数执行体 })(实参)
如:
(function (x, y) { alert(x > y) })(3, 4)
十一、对象
1、什么是对象
是一种数据类型;是一种无序的数据集合{数组一有序数据集合}
2、对象的使用
1、对象声明语法:
let 对象名 = {}
2、 对象有属性和方法组成
let 对象名 = {
属性名:属性值,
方法名:函数
}
如:
let ob = {
name = "你好",
age = 14,
gender = `女`
}
3、对象的属性使用--增删改查
1、 属性-查
对象名.属性
2、属性-查的另外一种写法
对象[‘属性’] 单引号和双引号都可以
3、 属性-改
对象名.属性 = 新值
4、属性-增
对象名.新属性 = 新值
5、属性-删
delete 对象名.属性
4、对象中的方法
语法:
let 对象名 = {
方法名:函数
}
方法是由方法名和函数两部分构成,它们之间使用 : 分隔。例如:
let person = {
sayHi:function(){//此处是匿名函数
//也可以添加形参和实参
document.write("hihi")
}
}
3、遍历对象
对象没有像数组一样的length属性,所以无法确定长度
方法:
for(let k in 对象名){
alert(对象名[属性值])//依次打印的话
}
例如://定义对象
let obj = {
uname: `anmi`,
age:18,
sex: `男`
}
//遍历对象
for(let k in obj){
console.log(k);//打印出来的是 `uname` `age` `sex`
//存的是字符串类型的属性
console.log(obj[k]);
}
一定记住: k 是获得对象的属性名, 对象名[k] 是获得 属性值
4、遍历数组对象
let students = [
{ name: '小明', age: 18, gender: '男', hometown: '河北省' },
{ name: '小红', age: 19, gender: '女', hometown: '河南省' },
{ name: '小刚', age: 17, gender: '男', hometown: '山西省' },
{ name: '小丽', age: 18, gender: '女', hometown: '山东省' }
]
for (let i = 0; i < students.length; i++) {
// console.log(students[i]) // 会打印每个对象
console.log(students[i].name)//打印每个对象里面的属性
//打印结果为: 小明 小红 小刚 小丽
}
5、构造函数
他创建方式多次创建多个对象
构造函数不需要 return,就可以返回结果
语法:
1、声明构造函数
function 构造函数名(形参){
this.属性 = 值
this.方法 = function(){}
}
2、利用构造函数创建对象
new 构造函数名(实参)
可在前面赋值变量,变量名即对象名
后面对象名.属性进行输出
实例:
//利用构造函数创建歌星 姓名,年龄 星座 性别 唱歌
//1、声明构造函数
function Star(uname, age, xingzuo, sex) {
this.uname = uname//将上面的形参传入到此处给
this.age = age
this.xingzuo = xingzuo
this.sex = sex
this.sing = function (song) {
console.log(song);
}
}
//2、创建对象
let zj = new Star(`张杰`, 18, `白羊座`, `男`);
console.log(zj);//打印歌星张杰信息全部
//3、查看对象属性,访问对象属性
console.log(zj.uname);//张杰
//4、创建第二个歌星
let zjl = new Star(`周杰伦`, 18, `摩羯座`, `男`)
console.log(zjl);//打印歌星周杰伦信息全部
//5、访问 调用对象方法
zj.sing(`逆战`)//逆战
zjl.sing(`夜曲`)//夜曲
6、 内置对象
1、Array数组型
// Array数组对象
// 一、实例属性
//1、 Array.length 获取数组长度
let arr = [1, 2, 3, 4];
console.log(arr.length); //4
// 二、实例方法
// 2、增 (修改原数组)
//(1) Array.unshift(x) 向数组的开头添加一个或更多元素,并返回新的长度。
let arr2 = [1, 2, 3, 4];
console.log(arr2.unshift(0, 6));//6
console.log(arr2);//[0,6,1,2,3,4]
//(2)Array.push(x) 向数组的末尾添加一个或更多元素,并返回新的长度。
let arr3 = [1, 2, 3, 4];
console.log(arr3.push(0));//5
console.log(arr3);//[1,2,3,4,0]
// 3、删 (修改原数组)
//(1) Array.shift() 删除并返回数组的第一个元素。
let arr4 = [1, 2, 3, 4];
console.log(arr4.shift());//删除第一个元素为1,并返回删除的1
console.log(arr4);//[2,3,4]
//(2)Array.pop() 删除数组的最后一个元素并返回删除的元素。
let arr5 = [1, 2, 3, 4];
console.log(arr5.pop());//删除最后一个元素为4,并返回删除的4
console.log(arr5);//[1,2,3]
//(3)Array.splice(x,y,z1,z2,z3) 从x位置开始删,删除y个,并在删除位置插入z,返回删除元素
let arr6 = [1, 2, 3, 4];
console.log(arr6.splice(0, 2, 1, 1));//从0位置开始删,删除2个,并在删除位置插入11,返回删除元素
console.log(arr6);//[1,1,2,3]
// 4、改 (修改原数组)
//(1)Array.reverse() 反转数组的元素顺序。
let arr7 = [3, 4, 1, 2];
console.log(arr7.reverse());//[2,1,4,3]
//(2)Array.prototype.sort(compareFn) 对数组的元素进行排序
let arr8 = [11, 32, 31, 24];
console.log(arr8.sort());//[11,24,31,32]默认按照字母排序
console.log(arr8.sort(function (a, b) {
return b - a //a-b 数字升序 b-a 数字降序
}));// [32,31,24,11]
//(3)Array.fill(value, start, end) 使用一个固定值来填充数组。前闭后开,依次把这之间填满value的数据
let arr9 = [1, 2, 3, 4];
console.log(arr9.fill(66, 0, 2));//在0-2这个下标位置之间填上66并覆盖原来的值
// 5、查
// Array.indexOf(x) 搜索数组中的元素,并返回它所在的位置。找不到返回-1
let arr10 = [1, 2, 3, 4, 5, 6];
console.log(arr10.indexOf(6));//5
console.log(arr10.indexOf(9));//-1
// 6、判
// Array.includes(x) 判断一个数组是否包含一个指定的值。
let arr11 = [1, 2, 3, 4, 5, 6];
console.log(arr11.includes(3));//true
// 7、转
//(1) Array.concat(x) 连接两个或更多的数组给新的数组,并返回结果
let arr12 = [1, 2, 3, 4, 5, 6];
let arr13 = [`你好`]
console.log(arr12.concat(arr13));//[1, 2, 3, 4, 5, 6,`你好`]
//(2) Array.join(x) 把数组的所有元素,根据字符串连接,返回一个字符串。
let arr14 = [1, 2, 3, 4, 5, 6];
console.log(arr14.join());//1,2,3,4,5,6
console.log(arr14.join(6));//{结果为16263646566}中的6就是在每个元素后面都加上6;且x值必须是数组里面的
//(3) Array.toString() 把数组转换为字符串,并返回结果。
let arr15 = [1, 2, 3, 4, 5, 6];
console.log(arr15.toString());//1,2,3,4,5,6
2、Number数字型
// Number⭐
let a = 2;
let b = new Number(2);
// 静态方法
// Number.isInteger(x) 判断x是否是整数
console.log(Number.isInteger(4));//true
console.log(Number.isInteger(4.2));//false
// 实例方法
// 1、Number.toString(x) 数字按照x进制转字符串
// 该方法实现了,十进制 转 任意进制
console.log(a.toString(2));//'1 0' 实现十进制转二进制
console.log(a.toString(8));//'2' 实现十进制转二进制
console.log(a.toString(16));//'2' 实现十进制转二进制
// ⭐ 任意进制 转 任意进制
// 2、任意进制 转 十进制 parseInt(输入想要转进制的前缀+想要转的数字)
console.log(parseInt(0b1));//1 二进制的1转十进制
console.log(parseInt(0x12));//18 十六进制的18转十进制
//3、 十进制 转 任意进制 toString(直接输入想要转进制的数字)
console.log(a.toString(2));//1 0 十进制的a转二进制
console.log(a.toString(8));//2 十进制的a转八进制
console.log(a.toString(16));//2 十进制的a转十六进制
3、Date时间型
// Date 日期
// 1 日期底层,是数字
// 2 JS初始日期,1970-1-1
// 3 精确度,毫秒, 专业术语: 时间戳
//创建时间对象
let dt = new Date(Date.now())
console.log(dt);//Wed Oct 16 2024 20:40:29 GMT+0800 (中国标准时间)
// 静态方法
// Date.now() 获取当前时间戳
// Date.parse(s) 将 字符串时间 转 时间戳
// 实例方法
//1、 Date.getFullYear() // 年
console.log(dt.getFullYear()); //所在的年份 2024
//2、 Date.getMonth() // 月, 0 到 11 之间的整数值, 0为一月,1为二月
console.log(dt.getMonth()); //所在的月份 9 也就是现在的十月
//3、 Date.getDate() // 日 16
console.log(dt.getDate()); //所在的日 10
//4、 Date.getHours() // 时
console.log(dt.getHours()); //所在的时刻 20
//5、 Date.getMinutes() // 分
console.log(dt.getMinutes()); //所在的分钟 43
//6、 Date.getSeconds() // 秒
console.log(dt.getDate()); //所在的秒数 16
//7、 Date.getTime() // 返回从 1970 年 1 月 1 日至今的毫秒数。
console.log(dt.getTime());//1729082692595
//8、 Date.getDay() // 星期几,0为周日,1为周一 ⭐⭐
console.log(dt.getDay()) //所在的星期 3
//9、 Date.toTimeString() //00:54:33 GMT+0800 (中国标准时间)
console.log(dt.toTimeString()); //当前的时间 20:46:34 GMT+0800 (中国标准时间)
//10、 Date.toLocaleDateString() //转换年月日为 yyyy/mm/dd
console.log(dt.toLocaleDateString());//2024/10/16
//11、 Date.toLocaleTimeString() //转换时分钟秒数为 hh:mm:mm
console.log(dt.toLocaleTimeString());//20:48:07
//12、 Date.toLocaleString() //同时转换当前 转换年月日为 yyyy/mm/dd和//转换时分钟秒数为 hh:mm:mm ⭐⭐
console.log(dt.toLocaleString());//2024/10/16 20:49:04
//13、 Date.toString() //网页的 月 日 年 现在时间描述 GMT+0800 (中国标准时间)
console.log(dt.toString());//Wed Oct 16 2024 20:49:55 GMT+0800 (中国标准时间)
//14、 Date.toDateString() //网页的 月 日 年
console.log(dt.toDateString());//Wed Oct 16 2024
//15、 Date.toUTCString() //网页的, 月 日 年 现在时间描述 GMT
console.log(dt.toUTCString()); //Wed, 16 Oct 2024 12:51:41 GMT
//16、 Date.toISOString()
console.log(dt.toISOString());// 2024-10-16T12:52:40.307Z
//17、 Date.toJSON() //2023-12-31T16:54:33.402Z
console.log(dt.toJSON());//2024-10-16T12:53:10.936Z
4、String 字符串型
//String
let s = "haloohello"
let s1 = new String("haloo")
// 实例属性
// String.prototype.length // 返回 number, 计算字符串元素个数
console.log(s.length);//10
// 实例方法
// 一、增
// String.concat(x1,x2,x3) // 返回 string, 字符串拼接
console.log(s.concat("hello"));//haloohellohello
// 二、删
let s3 = `hellohello`
// 1、String.substring(x1,x2) // 返回 string, 指定位置截取字符串,包含前不包含后
console.log(s3.substring(4, 9));//ohell 从下标为4截取到下标为8的数据
let r = ` hello `
// 2、String.trim() // 返回 string, 去除两端空格
console.log(r.trim());//hello
//3、 String.trimEnd() // 返回 string, 去除尾部空格
console.log(r.trimEnd());//` hello`
// 4、String.trimStart() // 返回 string, 去除首部空格
console.log(r.trimStart());//`hello `
//三、改
let s4 = `heLLoh WOrd`
// String.prototype.replace(x1,x2) // 返回 string,查找x1替换成x2,只替换一次
console.log(s4.replace(`h`, `h.`));//h.eLLoh WOrd 将发现的第一个h改为h,
// String.replaceAll(x1,x2) // 返回 string,查找x1替换成x2,全部替换
console.log(s4.replaceAll(`h`, `h2`));//h2eLLoh2 WOrd 将全部的h改为h2,
// String.toUpperCase() // 返回 string, 全部转大写
console.log(s4.toUpperCase());//HELLOH WORD
// String.toLowerCase() // 返回 string, 全部转小写
console.log(s4.toLocaleLowerCase());//helloh word
//四、 查
let s5 = `helloworld javascrip`
// 1、String.charAt(x) // 返回 string, 从0编号,返回指定位置的内容
console.log(s5.charAt(4));//o 在下标为4的位置的元素是o
// 2、String.charCodeAt(x) // 返回 number, 从0编号,返回指定位置的内容的unicode编码
console.log(s5.charCodeAt(`j`));//104
// 3、String.indexOf(x) // 返回 number, 查找指定元素第一次出现的位置,不支持正则
console.log(s5.indexOf(`s`));//15
//4、String.search(x) // 返回 number, 查找指定元素第一次出现的位置,支持正则,找不到-1
console.log(s5.search(`s`));//15
console.log(s5.search(`q`));//-1
// 5、String.toString() // 返回 string, 转string
console.log(s5.toString());//helloworld javascrip
//6、 String.valueOf() // 返回 string, 返回自己的值
console.log(s5.valueOf()); //helloworld javascrip
// 五、判
let s6 = `hello world j`
//1、 String.includes(x) // 返回 boolean, 判断是否包含指定的字符串
console.log(s6.includes(`world`));//true
// 2、String.startsWith(x) // 返回 boolean, 判断是否以指定字符串开头
console.log(s6.startsWith(`h`));//true
console.log(s6.startsWith(`j`));//false
// 3、String.endsWith(x) // 返回 boolean, 判断是否以指定字符串结尾
console.log(s6.endsWith(`j`));//true
console.log(s6.endsWith(`h`));//false
//六、 转
let s7 = `44,55`
// 1、String.split(x) // 返回 string[], 根据指定元素分割
console.log(s7.split(`,`));//[`44`,`55`] 以,号隔开创建数组,且逗号必须存在于字符串
//2、String.match(RegExp) // 返回 正则匹配数组
5、⭐ match 数学型
6、内置对象-生成任意范围随机数
Math.random() 随机数函数, 返回一个0 - 1之间,并且包括0不包括1的随机小数 [0, 1)
1、生成N-M之间的随机数(带小数)
Math.floor(Math.random() * (M - N + 1)) + N
2、生成N-M之间的随机数(整数)
Math.floor( Math.random()*(M - N + 1) + N
3、可以进行函数封装使用随机数
function getRandom(N, M) {
return Math.floor(Math.random() * (M - N + 1) + N)
}
document.write(getRandom(100, 200) + `<br>`)//生成100-200的随机数