JS学习笔记
1、基本的数据类型
number(包含整型和浮点型)、null(空)、undefined(当函数没有返回值时打印)、Boolean、string。
2、常用函数
typeof 和Pythono中type函数功能一样,trim()函数和python的strip()函数功能一样。
NaN只要参与比较,结果一定是false。
比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.
比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较.
3、创建字符串:
自动创建字符串对象:var str1="hello world"; 调用字符串的对象属性或方法时自动创建对象,用完就丢弃
手工创建字符串对象:var str1= new String("hello word"); 采用new创建字符串对象str1,全局有效
4、大小写转换
var str1 = "Lab";
var str2=str1.toLowerCase(); 变成小写
var str3=str1.toUpperCase(); 变成大写
5、获取指定字符
var str1 = "lab"
str1.charAt(index) charAt返回index位置的字符
str1.charCodeAt(index) charCodeAt返回index位置的Unicode编码
6、定位字符元素
var str1 = "laal";
var str2=str1.indexOf("l"); 只会定位第一个元素的位置
var str3=str1.lastIndexOf("l"); 只会定位最后一个元素的位置
7、截取子字符串
var str1 = "coconut";
str1.substr(start, length)
str1.substring(start, end)
str1.slice(start, end) 和python的切片一样
8、字符串操作
var str1 = "coconut";
替换子字符串:str1.replace(findstr,tostr)
分割字符串: str1.split(",")
连接字符串:str1.concat(addstr) 返回 str1+addstr
替换字子符串功能的拓展:格式化字符串
首先要知道在JS中字符串的方法例如 trim()、length()都是在 String.prototype方法中 (String原型类) 。
所以顺着这个思路进行重写
// 自定义一个方法
String.prototype.format = function (args) {
console.log(this) // this指的是当前调用方法的对象
var v = this.replace(/\{(\w+)\}/g,function (km,m) { // km是匹配到的结果 m 是索引 如果加上分组m就是分组的值
return args[m] // replace return什么匹配的位置就会被替换成什么
}); // 这里写正则表达式 g代表全局表达式写在两个斜杠中间
return v // 将格式化的字符串返回
}
console.log("卓哥哥年龄{age}性别{gender}".format({"age":18,"gender":"男"}))
9、创建数组
赋值法:attr=[1,2,3]
attr1 = new Array(size)、 attr2=new Array(“msg”) 可以放长度,或者放数组的内容(不能是整型)
attr.join() 拼接字符串,和python 的一样,只不过是数组才能调用。拼接完后成了字符串
attr.concat() 拼接数组或着添加新元素,并不会修改原数组。
attr.sort(可以放函数) 排序 正数返回值大于0 负数小于0
attr.splice(start, length) 删除、 attr.splice(start,0,value...) 添加多个值
10、压栈、出栈
var str1 = [1,2,3,4,5];
str1.pop() 出栈
str1.push(6) 压栈
str1.shift() 从头删除
str1.unshift(6) 从头添加
11、创建函数:
在js中,执行js文件时会先加载所有的function 所以函数的调用写在哪里都可以,但是如果要是匿名函数,就只能乖乖的写在下面了。
new Function(参数1,...参数n,函数体); 过于繁琐一般不用。
函数的length属性是说明参数有几个。用arguments接受多个参数,类似python的*arg , **kwarg。
但是用上这个函数就不一样了:
window.onload=function (){函数体} 页面加载完成时才执行的动作。
12、window对象下的方法
alert("msg")弹出警告框。
prompt("msg") 返回值是输入的值,没有就是null。
confirm("msg")选择对话框 有一个返回Boolean值
open(url)打开一个窗口。
close(url)关闭一个窗口。
window["key"] = 123 这样key就是全局变量
setInterval(函数名,间隔时间) 每过几秒执行一次,定时器,返回一个定时器的名字
clearInterval(取消的定时器的名字) 取消有setInterval设置的timeout
setTimeout(函数名,间隔时间) 在指定的时间后调用该函数
clearTimeout() 取消有setTimeout设置的timeout
实现自动的时钟:
var clock;
function begin() {
show_time();
if (clock==null){ // 防止创建多把锁
clock = setInterval(show_time,1000);
}
}
function show_time() {
var curr = new Date().toLocaleString();
var id1 = document.getElementById("id1");
id1.value=curr;
}
function che() {
clearInterval(clock); // 删除要把clock定义为undefined
clock=undefined;
}
※ window.open()和window.location.href区别:
1、window.location.href="http://www.jb51.net"; //在同当前窗口中打开窗口
2、window.open("http://www.jb51.net"); //在另外新建窗口中打开窗口
13、history对象:
back()返回上一个页面、后退 等价于 go(-1)。
go(num)跳转到指定的页面,正数向前找,负数向后找。
foward()前进 等价于 go(1)
14、location对象
assign(url)加载一个页面,直接跳转到url
reload()刷新
replace(url)用另一个页面替代另一个页面,这种情况下没有后退的功能,两个页面用的是同一个url
15、事件:存在一个默认的时间event。
e.preventDefault()阻止默认事件,会阻止时间发生的方式。
e.stoppropagation()阻止事件传播,小范围去绑定,去绑定小的范围。
阻止事件传播的例子:
<div id="div1" onclick="fun1()">
<div id="div2" onclick="fun2()"></div>
</div>
<script>
var ele1 = document.getElementById("div1");
var ele2 = document.getElementById("div2");
ele1.onclick = function () {
alert("2333")
}
ele2.onclick = function (e) {
alert("666");
e.stopPropagation();
}
</script>
当点击小范围时出现两个弹框,是因为没有阻止其事件传播,当阻止时间传播以后就会出现一个弹框。
※:补充一个oninput事件是当输入的时候每输入一个字符就会执行一次。
16、classList
标签名.classList 获取当前标签所有的类名
标签名.classList.add("name") 往当前标签添加一个类名name
标签名.classList.remove("name") 从当前标签删除一个类名name
可以用来做遮罩层 :
所谓的遮罩层分为三个部分,第一部分就是网页的整个主体,第二部分就是遮罩层类似蒙上一层面纱通过透明度调整,第三部分就是弹出的对话框。当第一次进入该页面时,只显示第一部分,其他两部分不显示,通过触发某些事件来显示第二部分和第三部分。
ele.onclick=function () {
big.classList.remove("hide");
model.classList.remove("hide"); // 删除使其隐藏的类
}
btn.onclick = function () {
big.classList.add("hide");
model.classList.add("hide"); // 增加隐藏的类使其隐藏
}
17、循环
两种循环方式:
(1)、推荐用这种方式
var attr = [1,2,3,4,5,6];
for(var i=0;i<attr.length;i++){
console.log(attr[i]);
}
(2)、不推荐用这种方式, 因为会遍历出一些属性(length, item),会出现想象不到的错误。
var attr = document.getElementsByTagName("li");
for(var i in attr){
console.log(i);
}
18、异常
try { throw new Date(); } // 抛出当前时间对象
catch (e) { alert(e.toLocaleString()); } // 使用本地格式显示当前时间
19、节点
ele.nextelementsibling 下一个兄弟元素
ele.children 子节点
ele.parentElement 父母节点
ele.removechild(ele) 删除节点
ele.appendchild(ele) 添加节点
ele.replace(old,new) 替换节点。
※: 关于DOM下创建一个节点:
var attr1 = document.createElement("li").innerText = "666"; // 这样会创建不成功
var attr2 = document.createElement("li"); // 这样就会创建成功
attr2.innerText = "666";
关于div.appendChild is not a function 这个问题,真的是中了邪了,实际上当拿到多个div时就会报错,写成div[0].appendChild()就解决了。
a标签无动作:
<a href="javascript:void(0);"> // 表示一个死链接,void(0) 是一段javascript代码,返回值是undefined
20、this关键字
var name = "root";
var age = 18;
function Func(name,age){
this.name = name; // 在一个类函数中,this代表这个类的对象
this.age = age;
this.func = function(){
console.log(this.age); // 10086
console.log(this.name); // pp
function inner(){
console.log(this.name); // root 在一个函数中,this始终代表window对象
console.log(this.age); // 18
}
return inner();
}
}
oop = new Func("pp",10086)
oop.func()
在JS中没有字典,只有对象。
21、JS中的自执行函数
(function () { // 自执行函数
function time(){
alert("2019-05-04");
}
$.extend({"NB":function(){ // jquery 的自定义插件机制
time();
}
})
})()
JS基础
-
程序:完成指定功能的指令;程序=数据结构+算法{创建者沃斯}
-
软件:一到多个程序的集合
-
计算机语言:跟计算机交流的语言;分三种:机器语言;汇编语言;高级语言高级语音2种:面向过程,面向对象。面向过程:写代码时像一个机器考虑每一步,自顶向下jie一步执行面向对象:更接近人类思维
-
引包:const readline = require("readline-sync")
-
console.log("请输入一个数:");
-
let number =readline.question()-0;##<span style="color:red">程序设计步骤:
-
需求分析
-
确定数据结构,算法
-
编码
-
调试测试
-
维护(修护BUG)##<span style="color:red">常见的程序相关错误类型
-
语法错误:容易避免
-
逻辑错误:符合语法逻辑有问题,得不到预期结果
-
运算错误:算法错误
-
开发错误:偏离需求##<span style="color:red">算法即:解决问题的方法和步骤
-
数值型算法:得到一个数字结果
-
非数值型算法:搜索结果等算法特征
-
确定性
-
有穷性:算法步骤有限
-
有0或多个输入
-
有1个或多个输出
-
有效性:每个步骤都能有效的执行算法表示方式
-
自然语言表示法:交换AB,由空瓶子C 转移AB实现交换
-
伪代码:s1:创建c;s2: a——>c;s3:b——>a;s4:c——>b
-
N%6==0,代表数字N除以6余数为0
-
JS:最初是一门依附在浏览器的脚本语言,从ES6变成通用语言JS和ECMAScript的关系:ECMAScript是语言标准,由JS实现
-
JS版本:JS版本 和ECMAScript版本,只有mozille作为网景的精神延续使用JS组成部分
-
核心语法ECMAScript
-
BOM:浏览器
-
模型
-
DMO:文档对象模型JS基础语法
-
区分大小写(大小写敏感)
-
注释:单行斜线/,多行
-
语句以;结尾
-
标识符(变量名字)硬性要求:由数字,字母,下划线,不能用关键字,保留字软性要求:望文知意var number = 5;声明并赋值var number:声明变量varnumber =5, age =18, height =10;用,声明多个变量var的特点
-
支持重复声明;可以按着顺序对同一数值进行赋值;
-
重复声明但没赋值时会忽略声明;
-
遗漏声明不允许这样使用
-
变量中的值的类型可以更改;let的特点
-
不允许重复声明
-
被块级作用域限制{}##<span style="color:red">数据类型
-
基本数据类型(原始数据类型||简单值)
-
引用数据类型(合成数据类型||复杂值)
-
<span style="color:red">typeof确认数据类型,typeof parseint(“123”),则自动表示123 Number
-
基础数据类型:undefined null number boolean string symbol
-
引用数据类型:objectundefined:声明的变量没赋值时,函数没有返回值;如果连声明都没有,则报错:变量没有定义;下列情况会返回undefined:1.访问未赋值的变量;2.任何被设置为undefined的变量;3.没有定义return表达式的函数;4.return里没有显式的返回任何内容5.访问不存在的对象属性null:空ECMA认为Undefined 是从null衍生出来的 console.log(undefined ==null):turn;undefined:有容器但是没赋值;null:什么都没有undefined:应该有值但是缺少值;null:啥都没有;boolean布尔值true false任何数据类型都可以转为布尔类型以下值会被转为false:
-
单双引号里是字符串模版
内容${变量}空字符串“” -
0 -0
-
NaN(Not a number)
-
false
-
null
-
undefinednumber以下合法数字类型:
-
整数
-
浮点数 1.5
-
负数 -90
-
NaN
-
科学技术法,1.23e2—> 1.23*100
-
Infinity 无限大NaN
-
NaN的数据类型是Number;
-
涉及到NaN的计算都是NaN;
-
NaN不跟任何值相等,包括他自己;
-
is NaN(内容)用于去判断内容是不是非数;<span style="color:red">string字符串##<span style="color:red">运算符数据类型运算符(操作符)
-
赋值运算符 =,+=,-=,*=,/=;a+=b为a=a+b;
-
自增自减,i++,i--,++i,--i;算法符号在前或者在后,就对应先自增自减或后自增自减再赋值,一般使用方法都是在内容中另起一行
-
逻辑运算符:与或非 and&& or|| not!
-
算术运算符;a=5,b="nihao",a+b=5nihao
-
逗号运算符 let a =1,b=2;
-
关系运算符 < > == ===,ASCII码==:值相等就行,除了NaN==NaN //false; ===全等值,数据类型也要相同
-
三目运算符 表达式1?表达式2:表达式3,判断1的真假,为真进行2,为假进行3let a=15,b=10; a < b? console.log("a<b");console.log("a>b")##数据类型转换:隐式 显式
-
隐式:console,log("11"<5);结果false;隐式"11"自动转换为number11.“”空字符串默认为0;true+1=2,true默认为1,false默认为0,null默认为0IF(“”)括号中只有不为空字符串,运行结果都为true
-
显式: parseint()转为整数形式,只读取整数,从字符串第一位开始解析到非数,如果第一位为非数字内容(非数)则返回NaNparsefloat()转为浮点数形式,能读取出小数点的数,从字符串第一位开始解析到非数,如果第一位为非数字内容(非数)则返回NaNNumber()整体分析,整数小数都分析,一旦有非数,返回NaNString()转为字符串特别题目console.log(1 == true);// 1 == 1 true;console.log(2 == true);// 2 == 1 false;console.log(typeof a;typeof typeof a);前者为number后者为typeof"number"为stringconsole.log(3<2<1);//3<2为false,"false"默认为0,则0<1为true;##<span style="color:red">流程控制流程控制语句(结构):顺序,选择,循环单分支:IFIF(条件){内容}条件为真,就进入If{}中双分支:简写方法为三目运算#####IF(条件){内容}else{内容} 两个分支只运行一个 switch (number){ case 1: case 2: case 3: console.log("春季"); break; case 4: console.log('秋季'); break;}在switch的复用及选中;##<span style="color:red">循环重复循环分类:for,while,do while;
-
for(初始化;测试;递增){循环体 }#####例:for(let i=0;i<3;i++){ console.log(i); }
-
while(取值范围){自增自减;}console.log(声明);
-
do{循环体}while(条件)
-
打断循环:在条件后加上break;打断单次循环用continue;例:if(i=3){continue}单独打断i=3这个循环##<span style="color:red">Homework数据结构数据结构指计算机存储,组织数据的方式。最常见的就是数组,将数据[有序]的排列在一起。数组中每一个值成为元素item,元素在数组中有一个唯一的位置称为下标 ||索引 index下标取值从0开始
-
创建数组:let arr[];
-
构造函数:let arr=new ARRay();数组赋值:let arr=[0,"two",true];字符串数字都能使用 简单值和复杂值的比较:原始数据类型所占空间大小是固定的,存放在【栈】中,先进后出引用数据类型大小不固定,引用数据类型存放在【堆】中arr1=[1,2,3],arr2=[1,2,3];但是arr1不等于arr2,数据存放空间不是一样的。简单值比较是【值】的比较,复杂值是【址】的比较;
-
arr.length读作:数组的长度;
-
console.log(arr[0]);通过下标找到指定元素;遍历数组:
-
for 通过下标;#####2. for of 遍历到每一个元素; let arr=["a","b","c",true,99]; for(let item of arr){ console.log(item); }#####3. for in 遍历到下标,效率低,通常用于遍历对象; let arr=["a","b","c",true,99]; for(let index in arr){ console.log(arr[index]); }#####4. forEach() 不能打断,传入一个回调函数; let arr=["a","b","c",true,99]; arr.forEach(function(item,index){ console.log(
第${index}位的是${item}); }) -
arr.push(item1,item2)在末尾添加元素
-
arr.pop();删除末尾的元素;
-
arr.shift();删除开头的元素;
-
arr.unshift();在开头添加元素;
-
arr.slice(startIndex,endindex);选中从开始元素到结尾元素前一位
-
arr.splice(开始位置,用0或1表达是否删除,元素item名字)任意性的添加或者删除;
-
arr.reverse()反转数组元素;
-
数组排序方法:arr.sort((a,b) =>a- b);从小到大排序;反之b-a从大到小;
-
<span style="color:red">arr.concat concat() 方法用于连接两个或多个字符串
-
();数组拼接,两者合在一起;</span>
-
arr.indexof()返回元素下标,说明元素在第几位,如果元素不存在,则返回-1;
-
arr.indexof()与arr.lastindexof() 顺序查找||倒序查找;######16. 解构:复杂数据类型分解成简单数据类型let arr=[5,20,77]; let [a,b,c]=arr;[a,b,c]=[5,20,77];如果不想要某个值,可以设置为空的例:let[a,,c]=arr;得到5,77 ######17. 拓展运算符:let arr1=[1,2],arr2=[3,4];let newArr=[...arr1,...arr2];console.log(newArr);得到1,2,3,4 ######18. 分割符:let arr=[1,2,3,4,5];console.log(arr.join("-")); ######19. 传入分隔符:let str="hello ni";let arr=str.split("");console.log(arr);
##<span style="color:red">排序去重二维数组#####1. 多堆数组:由于JS数组中的数据可以是任意数据类型,所以也可以放入数组,即二维数组;#####例: let arr=[1,true,"a",["2-1","2-2"]]; console.log(arr3)#####2. 选择排序:#####选择排序 一个数与后面每一个数进行比较,交换 let arr = [2, 14, 10, 7, 66]; for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { // 交换 let temp; temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } console.log(arr);#####3. 冒泡排序:#####冒泡排序 两个相邻的数 let arr = [2, 14, 10, 7, 66]; for (let count = 1; count < arr.length; count++) { // 比较次数||轮数 for (let i = 0; i < arr.length; i++) { if (arr[i] > arr[i + 1]) { // i 是当前数, i+1 是下一个数 let temp; temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; } } } console.log(arr);#####4. 去重: let arr = [2, 2, 14, 10, 1, 7, 66, 14]; let newArr = []; for (let i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) == -1) { newArr.push(arr[i]); } } console.log(newArr);##sort函数#####1. map()遍历数组并操作元素 7-2 let arr=[1,2,3,4]; let newarr = arr.map(function(item,index) {return item*2;}); console.log(newarr);newarr=[2,4,6,8];#####2. filter()过滤筛选满足条件的元素,会忽略掉undefined let arr=[1,2,3,4]; let newArr = arr.filter(function (item) { return item % 2 == 0; }); console.log(newArr);#####3. some()只要有一个满足条件的情况,结果为true#####every()只要有一个不满足条件的情况,结果为false let arr=[1,2,3,4]; let result = arr.some(function (item) { return item % 2 == 0; }); console.log(result);#####4. Set[快速去重] 集合,ES6新数据结构,类似于数组,里面不会包含重复值; let s = new Set([1,2,2,1,3,4,5,]); console.log(s); 快速去重: let arr=[1,2,3,1,2,4,5]; arr = [...new Set (arr)]; console.log(arr);#####5. size 属性 获取元素个数; let s= new Set([1,2,3,5]); console.log(s.size);#####6. 添加函数add;注意大写元素的开头字母 let s= new Set([1,2,3,5]); s.add("数值6"); console.log(s);// [1,2,3,5,6] 若要重复添加,add().add().add();#####7. 删除函数 delete(item); let s= new Set([1,2,3,5]); s.delete(3); console.log(s);// [1,2,5]#####8. 查询函数 hsa() 得到boolean值 console,log(s.has("数值"));#####9. 清空函数 clear; s.clear(); console.log(s); //[""];
-
s.keys()和s.values() 键和值相同 entries()键值对;
#####11. Map() ES6新的数据结构 obj的键只能是string类型,但是Map()可以是任意类型; arr.map()//数组的方法; arr.Map()//新的数据结构;
-
函数function 方法; 目的:1.复用;2.维护;3.返回值,再做后续操作;4.团队开发;函数3要素:功能,参数,返回值;
声明式函数:function 函数名(目的){ ...函数体}#####例: fuction sayhello(){ console.log("hello"); } sayhello();
函数表达式:调用
let fn = fuction(){功能
}; <br><br>
匿名函数—> IIFE 立即执行函数;
function(){
console.log("我是匿名函数");}
();
#####13. 伪数组对象 arguments 计算实参个数
#####14. 参数:形式参数 ||实际参数;#####形参:声明时,想象成变量;#####实参:调用时,实际值; let introduce = function(name){ //形参 console.log('你好,我是${name}'); } introduce("名字");//实参#####15. 函数的返回值 return; let fn=function(){ let gift ="天线宝宝"; return gift; } let result =fn(); console.log(result); random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。 结束函数return 后面的语句不会被执行; 函数默认返回undefined; 只会返回一个内容,多个内容以数组形式返回;#####16. 不定参数(rest) 是数组; let fn=function(x,y,...rest){ console.log(x); console.log(rest); rest.push("xuyang"); console.log(rest); console.log(fn.length); } fn(1,"a",true);
#####17. 箭头函数 取代fuction; let fn=function(x){ console.log(x); } let fn=(x)=>{ console.log(x); } fn(9);如果只有一个形参 ()可以省略;如果只有一条return语句,()和return可省略;let fn =x => x; 即:接受形参x,再return x;#####18.var 变量提升脚本引擎解析变量,函数预解析var声明的变量,声明式函数fuction fn(){}提升代码顶部
只提升声明,不提升值
var a;
console.log(a);
a= 10;
#####19. 函数提升:声明式函数function fn(){} function fn(){ console.log(内容); } fn();局部能访问全局变量,反之不行(全局不能访问函数内部的声明变量)
-
回调函数callback把函数A作为参数传给函数B,在函数B中调用这个函数A,函数A是回调函数;更多使用在异步编程;
例:
let fn1=function(){
console.log(`这是调用函数`);
}
let fn2=function(a){
a();
}
fn2(fn1);
-
递归递归函数就是指一个函数直接或者间接调用自己;
##JS对象数组是一组数据的【有序】集合,对象是【无序】集合对象拥有自己的属性和方法JS自带对象;array Set function 内置对象####1. 创建对象 表达式 let obj={}####例:对象属性所对应的值不是fuction,就把这条数据称为对象的属性 let obj={ name:"xuyang", gender:"male", };
查询||访问
console.log(boj.name);
console.log(obj["gender"]);
删除delete
delete obj.gender;
console.log(obj);
增加对象: 对象.key
obj.age=22;
console.log(obj);
name="xuyang":对应的键和值;###1.属性名=属性值,可以直接写属性值;obj.key=变量 同名,可以简写:例:
let obj={name:name}
let obj={name}
#<span style="color:red">新增数组对象:模板字符串拼接问题,变量不用${}例:
let arrss={id:new_id, name:new_name, age:new_age, gender:new_gende}
###2. 遍历对象——键 let obj={ name:"xuyang", gender:"male", }; for(let key in obj){ console.log(obj[key]); }
###3. 对象的嵌套 let family={ peggy:{ name:"peggy", age:"22" } }; console.log(family.peggy.name);
###4. this 作为对象的方法,指向该对象 let obj={ name:"xuyang", gender:"male", say: function(){ console.log(this); } }; obj.say();
-
JSON javascript object notation一种数据交换格式,不是编程语言,常被用于数据序列化,用于web服务间的信息交换MXL的内部规范太多<name>xuyang</name>###——JSON let obj={ "name":"xuyang", "gender":"male" };差别:
-
在JSON中,Key和string必须使用""
-
允许使用:number,boolean,null,array,object,"string"
-
不允许的值:undefined,function,symbol###例: let obj={ "name":"xuyang", "gender":"male" }; let str=JSON.stringify(obj); console.log(str, typeof str);####序列化obj 转换为str let result=JSON.parse(str); console.log(result, typeof result);反序列化str转换为obj###——Symbol基础数据类型,独一无二###创建Symbol let name=Symbol("name"); let obj={ name:"xuyang", gender:"male",
[name] "lisi"}; let s1=Symbol(); console.log(s1, typeof s1); console.log(obj);注意Symbol这里S是大写###——string属性和方法 str.charAt(index) 传入index返回下标对应的字符; str.indexOf(item)传入元素返回下标; str.trim()去前后的空格,常用在用户登录注册 console.log(str.toUpperCase());转为大写 console.log(str.toLowerCase());转为小写
let str="xuyang"; console.log(str.length); console.log(str.charAt(1)); console.log(str.indexOf("a")); console.log(str.trim()); console.log(str.toUpperCase()); console.log(str.toLowerCase());###——Math 静态对象不需要实例化对象,直接拿来用console.log(Math.ceil(number));向上取整console.log(Math.floor(number));向下取整console.log(Math.round(number));四舍五入
let number=3.14; console.log(Math.ceil(number)); console.log(Math.floor(number)); console.log(Math.round(number));###——Data日期
let timeobj=new Date(); let year=timeobj.getFullYear(); let month=timeobj.getMonth()+1; let day=timeobj.getDate(); let hour=timeobj.getHours(); let minute=timeobj.getMinutes(); let second=timeobj.getSeconds(); console.log(
现在是${year}年${month}月${day}日${hour}时${minute}分${second}秒);###——disabled 禁用设置 disabled 属性是一个 boolean(布尔)值。 如果使用该属性,则会禁用按钮。 被禁用的按钮是无法使用和无法点击的。 xx.disabled=false; 表示失效 可以对 disabled 属性进行设置,使用户在满足某些条件时(比如选中复选框,等等)才能点击按钮。然后,可使用 JavaScript 来删除 disabled 属性,使该按钮变为可用的状态。###——包装类型
##<span style="color:red">reg正则表达式#####描述了一种字符串匹配的模式(规则)#####常用于表单验证#####构造函数: let reg = new RegExp("规则","模式修饰符");#####字面量: let reg=/规则/模式修饰符;例:
let reg=/a/i; //验证字符串中是否包含a
let str="abc";
let result=reg.test(str);
console.log(result);
#####参数:#####模式修饰符:包含3种 1.g 全局 2.i 不区分大小写 3.m 多行#####正则组成部分: 1.定界符 //指定正则开始和结束 2.字符 // 3.元字符 有特殊含义的符号 4.模式修饰符#####元字符 1. 匹配任意字符,除了换行回车、行段分隔符 2. ()划分整体 3. []匹配中括号中任意一个字符 n选1 例: let reg=/[0-9]/; let str="1a"; console.log(reg.test(str)); 只要有一个符合条件就为true; test() 方法是一个正则表达式方法。 test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
4. {a,b}匹配最少a次最多b次 {1,5}某个字符至少出现1次,最多5次
5. [^]排除、 [^0-9]
6. ?匹配0或1次 {0,1}
7. *匹配0或多次 {0,}
8. +匹配1或多次 {1,}
9. |分割,等同于或者
10. ^脱字符 规定正则以XXX开头
11. $规定正则以XXX结束
例:
let reg=/^[0-9]{5}$/
表示仅限六位数字
12. 转义符\
#####简记:注意区分大小写,大写是取反 1. \d digit 匹配数字[0-9] 2. \w word 匹配数字字母下划线,不包含中文[a-zA-Z] 3. \s

浙公网安备 33010602011771号