javascript笔记
JavaScript类型转换
变量假设为a
-
转换为字符串
- 基本类型都有toString函数:a.toString(2/8/16)【数字转换字符串可写参数 转换为几进制字符串 默认为十进制】
- String(a)
两函数不同之处在于对null的处理
String()会返回字符串"null"
toString() 就会报错,无法执行 -
转换为数字
- parseInt(a)
- parseFloat(a)
- Number(a)
Number()和parseInt()区别在于,当转换的内容包含非数字的时候,Number() 会返回NaN(Not a Number),parseInt() 要看情况,如果以数字开头,就会返回开头的合法数字部分,如果以非数字开头,则返回NaN
-
转换为Boolean
Boolean()
- 当转换字符串时:非空即为true
- 当转换数字时:非0即为true
- 当转换对象时:非null即为true
三目运算符
A条件 ? B结果 : C结果;
A条件真则返回B 为假则返回C
增强型循环语句
调试捕捉错误
可以调试代码 并不会中断在这里
try{
需要尝试的代码
}
catch(err){
console.log("捕捉到错误:" + err.message);
}
对象
-
数字
-
使用new Number 创建
例如:
var a = new Number(123); -
判断是否是一个数字 使用isNaN()
例如:
var a = new Number(“123abc”); isNoN(a); //会返回true -
返回小数 .toFixed()
例如:
var a = new Number("3.1415926"); a.toFixed(2); //保留两位小数点 返回 3.14 -
返回一个数字对象的基本数字类型 .valueOf()
例如:
var a = new Number("123"); var b = a.valueOf(); typeof a; //返回object typeof b; //返回number
-
-
字符串
-
使用 new String() 创建
-
使用 .length 获取字符串长度
var a = new String("Hello JavaScript"); y.length; //返回字符串长度 -
去除两边空格.trim()
var str = " hello "; console.log(str.trim()); //返回 hello -
大小写转换 .toUpperCase / .toLowerCase
var str = "ni Hao Ya"; console.log(str.toUpperCase()); //返回 NI HAO YA console.log(str.toLowerCase()); //返回 ni hao ya -
返回指定位置的字符 .charAt() / .charCodeAt()
-
charAt() 返回指定位置字符
例如:
var a = new String("Hello JavaScrpt"); a.charAt(0); //返回 'H' 字符 -
charCodeAt() 返回指定位置字符unicode码
例如:
var a = new String("Hello JavaScrpt"); a.charCodeAt(0); //返回 72
-
-
字符串拼接 .concat()
a.concat(b) 返回a和b拼接的字符串
-
字符串出现的位置 .indexOf / .lastIndexOf(可用于判断数组中是否有这个元素)
-
.indexOf 返回字符串第一次出现的位置
var a = new String("Hello JavaScript"); a.indexOf("a"); //返回字符a第一次出现的位置 7 if(a.indexOf('b') === -1){ console.log("字符串中不存在b"); } -
.lastIndexOf 返回字符串最后一次出现的位置
var a = new String("Hello JavaScript"); a.lastIndexOf("a"); //返回字符a最后一次出现的位置 9
-
-
字符串比较 .localeCompare
a.localeCompare(b) a字符串与b字符串比较
返回0 //表示a与b字符串相等
返回1 //表示遇到比较的a字符比b字符更大
返回-1 //表示遇到比较的a字符比b字符更小
例如:
var a = new String("Hello"); var b = new String("Hello"); var c = new String("ABC"); a.localeCompare(b); //返回0 a.localeCompare(c); //返回1 -
截取一段子字符串 .substring(,)
a.substring(x,y) 取a字符串中 x到(y-1) 的字符串
注:(x,y)是左闭右开的区间
var a = new String("Hello JavaScript"); a.substring(0,2); //返回‘He’ -
分割字符串 .split(,)
a.split(b,c) 把a字符串用b字符分割 并返回数组,如果填写了c就按照c个输出,没填则输出分割的全部字符串
例如:
var a = new String("ab cd ef gh"); a.split(" "); //返回 ab,cd,ef,gh (数组) a.split(" ",2); //返回 ab,cd (数组) -
替换子字符串 .replace(,)
a.replace(b,c) 把a字符串中满足条件的子字符串b替换成c
注:默认情况下只替换第一个,若想全部替换则参照下方全部替换规则
var a = new String("abcdefasas"); a.replace("a","y"); //返回 ybcdefasas //以下是全部替换的两种方法 //1. a.replace(/a/g,"y"); //返回 ybcdefysys //2. var reg = new RegExp("a","g"); a.replace(reg,"a"); //返回 ybcdefysys
注:所有字符串对象的方法 返回的 字符串都是 基本类型的String。
-
-
数组
-
使用 new Array()/ [] 创建数组对象
- new Array() 创建空数组
- new Array(5) 创建长度为5的数组 未赋值都是undefine
- new Array(1,1,2,2,3,3) 创建自定义数组 元素就是1,1,2,2,3,3
另外一种快捷创建,var arr = [1,2,3];
-
使用 .length 获取字符串长度
var a = new Array(1,1,2,2,3,3,4,4); a.length; //返回数组长度 8 -
遍历数组 for / for in
-
for循环利用 数组.length 就可以循环出来
-
使用for in增强型循环遍历数组(也可以遍历自定义对象 遍历自定义对象会遍历出原型链上所有成员)
var a = new Array(1,2,3); for(i in a){ p(a[i]); } //for in 循环 -
使用in 判断对象是否有某个属性
var person = { name: "aaa", age: 18 }; 'name' in person; //返回 true
-
-
连接数组 .concat
a.concat(b) 与连接字符串类似
-
数组按指定分隔符组合成字符串 .join()
a.join("@") 把a数组中每个数组成员 按@组合成字符串
var a = new Array(1,1,2,2); a.join(); //返回的是默认的 1,1,2,2 a.join("@"); //返回的是 1@1@2@2 -
在尾部插入数组成员 .push 和 弹出数组成员 .pop
a.push(5) 在尾部插入一个成员5
a.pop() 尾部弹出一个数组成员 并返回弹出的值
-
在头部插入数组成员 .unshift 和 弹出数组成员 .shift
a.unshift(5) 在头部插入一个成员5
a.shift() 头部弹出一个数组成员 并返回弹出的值
-
数组排序 .sort()
a.sort() 操作原数组 默认是从小到大排序
如果需要自定义排序规则 则需要定义比较函数如:
function comparator(x,y){ return x-y; /* 排序函数为真 则内部sort处理互换 */ } var a = new Array(3,1,4,1,5,9,2,6); a.sort(comparator); console.log(a); //返回从大到小排序 9,6,5,4,3,2,1,1 -
数组数据翻转 .reverse()
a.reverse() 操作原数组 进行数据翻转
-
数组截取 .slice(,)
a.slice(x,y) 取a数组中 x到(y-1) 的字符串
注:与字符串截取一样,(x,y)是左闭右开的区间
例如:
var a = new Array(1,2,3,4); a.slice(1,3); // 返回 1,2(数组) //其他知识:伪数组转数组 obj为伪数组 arr为返回新数组 var arr = Array.prototype.slice.call(obj,0) -
删除和插入数组成员 .splice(,,...)
a.splice(x,y,i,k,...) 操作原数组 在数组a中 从x位置删除y个成员,再插入i,k成员
例如:
var a = new Array(1,2,3,4,5,6); a.splice(1,2); //操作原数组 从1位置删除2个成员 返回:1,4,5,6 a.splice(1,0,2,3,3.5,3.6); //操作原数组 从1位置删除0个元素 并插入2,3,3.5,3.5 返回1,2,3,3.5,3.6,4,5,6 console.log(a); -
数组中元素出现的位置 .indexOf / .lastIndexOf(可用于判断数组中是否有这个元素)
var a = [1,2,3,4]; a.indexOf(3); //返回 2; if(a.indexOf(5) === -1){ console.log("数组中不存在5"); }
-
-
日期
-
使用 new Date 创建日期对象
//1. 获取当前时间 var a = new Date(); //Fri Feb 26 2021 12:23:51 GMT+0800 (中国标准时间) //2. 指定时间1 var a = new Date('2021-03-03 15:42:00'); //3. 指定时间2 new Date(年,月,日,时,分,秒) var a = new Date(2020,3,3,15,42,0); //4 . 用时间戳创建 var a = new Date(1614757583965); -
年[.getFullYear()]、月[.getMonth()]、周[.getDay()]、日[.getDate()]
注:getMonth()和getDay都是返回基零的 0代表1月/星期一
var a = new Date(); a.getFullYear(); //返回 2021 a.getMonth()+1; //返回 2 a.getDay()+1; //5 a.getDate(); //返回 26 -
时[.getHours()]、分[.getMinutes()]、秒[.getSeconds()]、毫秒[.getMilliseconds()]
-
1970至今经历的毫秒数[.getTime()]
getTime()与程序真实运行的容器(服务器)所在的时区相关。如果程序运行在东八区,它返回北京时间1970年01月01日08时00分00秒起至现在东八区时间的总毫秒数。如果运行在UTC时区则返回1970年01月01日00时00分00秒起至当前UTC时间的总毫秒数。//方法1 var time = new Date().getTime(); // 1614757583965 //方法2 var time2 = new Date(); console.log(+time2); // 1614757583965 -
赋值日期时间[.setFullYear(),.setMonth(),.setDate(),.setHours(),.setMinutes,.setSeconds]
设置时间到2012/12/12 00:00:00
var a = new Date(); a.setFullYear(2012); a.setMonth(11); //是基零的 所以11表示12月 a.setDate(12); a.setHours(0); a.setMinutes(0); a.setSeconds(0); a; //Wed Dec 12 2012 00:00:00 GMT+0800 (中国标准时间)
-
-
数学对象(内置对象 不能new)
-
自然对数 Math.E 和圆周率 Math.PI
-
绝对值 Math.abs()
-
取最大值Math.max(...) 最小值Math.min(...)
Math.max(1,2,3,3,4,5); //返回5 Math.min(1,2,3,3,4,5); //返回1 -
求幂 Math.pow(,)
Math.pow(2,3); //返回 8 -
四舍五入 .round(,)
Math.round(1.4); //返回 1 Math.round(1.5); //返回2 -
随机数 .random()
Math.random(); //返回一个0-1之间的随机数 Math.floor(Math.random()*(max-min+1)+min);; //max-min 之间的随机整数 -
开方 .sqrt()
-
-
自定义对象
-
通过new Object创建对象
var hero = new Object(); //创建对象 hero.name = "露娜"; //添加对象属性 hero.say = function(){ console.log("月光啊,闪爆他们~") }; //添加对象函数 hero.say(); //调用say 输出“月光啊,闪爆他们~” -
通过{}创建对象
var a = { name: "露娜", age: 18, say: function(){ console.log("月光映照着我的生命,以及你的死期"); } } -
通过构造函数function创建对象
-
由于直接创建对象会每创建一个对象都要重新赋值 所以采用构造函数创建
function Hero(name,say){ this.name = name; this.say = function(){ console.log(name + "说:" +say); } } var luna = new Hero("露娜","月光啊,闪爆他们~"); var zixia = new Hero("紫霞仙子","我的意中人是一个盖世英雄~"); luna.say(); //露娜说:月光啊,闪爆他们~ zixia.say(); //紫霞仙子说:我的意中人是一个盖世英雄~ -
为对象原型追加方法
// 【【【自定义对象名字首字母大写】】】 function Hero(name,say){ this.name = name; this.say = function(){ console.log(name + "说:" +say); } } var luna = new Hero("露娜","月光啊,闪爆他们~"); Hero.prototype.kill = function(killed){ console.log(this.name + "清理掉了" + killed); } //Hero.prototype是为原型添加新方法,通过设置luna.__porto__(这个浏览器是私有属性 不推荐使用)设置新方法一样的 luna.kill("小兵");
-
删除对象属性 delete
var p = { name: 'aaa', age: 18 }; detele p.name; //删除p中的name属性
-

浙公网安备 33010602011771号