js基础知识笔记
ECMAscript有五种数据类型
分别为:Undefined、Null 、Boolbean、Number和String;Object为复杂的一种数据类型;
typeof:
typeof是用来检测一个数据的数据类型的,返回值是变量的数据类型;
instanceof:
instanceof是用来检测引用类型的的数据类型的,[] instanceof Array,基础类型检测都是返回false。
isNaN()
isNaN是用来检测一个数据是否为非数值的。
isNaN与任何值都不相等,包括isNaN本身。返回值为布尔值;
Number()、parseInt()和parseFloat()
Number()可以用于任何数据类型;
parInt()和parseFloat()是专门把字符串转换为数值的;
str,toString()和String()
将str转换为字符串
Boolbean
除0之外的所有数字,转换为布尔型都为true
除""之外的所有字符,转换为布尔型都为true
null和undefinew转换为布尔型为false
数组属于对象类型,所以空的数组转换成布尔型是true
相同的是,空的对象转换成布尔型也是true
空数组[]和空对象{}都是object类型,因此直接用于if判断条件时就会被转化为true。
2.
任意值与布尔值比较,都会将两边的值转化为Number。
注意:
如果将空数组[]与布尔值false比较,false转化为0,而空数组[]也转化为0,因此[] == false的判断得到true。
如果将空对象{}与布尔值false比较,false转化为0,而空对象{}转化为NaN,由于NaN与任何数都不相等,因此{} == false的判断得到false。
表达式
操作符
算术操作符
"+ - * / %" "++a" "--a a--"
赋值操作符
==相等 ===全等 != 不相等!==不全等 返回值boolean型
三元操作符
条件?执行执行代码1:执行代码2
可代替简单if语句
逻辑操作符
&&:与 ||:或 !:非
JS基本语句和函数
基本语句:
if语句
if(){
statement1;
}else if(condition){
statement2;
}...else{
statement3;
}
prompt()和alert()用法
prompt() 点击取消返回NULL值;
string.length:获取字符串长度,返回值:number
document.write() 想浏览器窗口输出内容
new Date().getDay() 获取星期返回值number(0-6)
swith语句
switch(expression){
case value:statement
break;
.....
case value:statement
break;
default:statement;
}
ar input=prompt("请输入您要查询的业务编号");
switch(input){
case "1":
document.write("账户余额为。。。。。。");
break;
case "2":
document.write("转账余额为。。。。。。");
break;
case "3":
document.write("信用额度为。。。。。。");
break;
default:
document.write("退出银行系统。。。。。。");
}
循环语句
for(语句1;语句2;语句3){
被执行代码
}
for嵌套:1、外层为假时不执行;2、执行外层再执行内层,直至内层条件为假时去返回去外层去执行。
whlie(条件语句){
需要执行的代码
};
do{执行的代码}while(条件)至少执行一次。
区别:for语句适合一直循环次数的循环体;while语句适合位置循环次数的循环体。
break和continu语句
break:立即退出循环;continue:结束本次循环,继续开始一下次。break只能跳出一层循环
函数
定义函数
functio functionName([arg0,arg1...argn]){
statements
}
调用:函数名:([arg0,arg1...argn])
返回值:函数可以通过return语句后面加需要返回的值来实现返回值。
argments
和数组类似却不是array实例,[]语法访问它的每个元素,length属性确定传递参数的个数。
js内置对象
1、Array 2、String 3、Math 4、Date
数组
创建数组:var array=new Array()和array=[];
数组长度:array.length;返回值:number;
数组的栈方法
push() 语法:arrayObject.push(newele1,newele2....newelex) 把参数添加到尾部; 返回值:把指定的值添加到数组后的新长度。
unshift() 语法:arrayObject.unshift(newele1,newele2....newelex) 把参数添加到开头;返回值:把指定的值添加到数组后的新长度。
pop() 语法:arrayObject.pop() 删除arrayObject最后一个元素;返回值:被删除的那个元素;
shift() 语法:arrayObject.shift() 删除arrayObject第一个元素;返回值:被删除的那个元素;
jion() 语法:arrayObject.jion(separator)功能:把数组中的所有元素放入一个字符串;返回值:字符串。默认值为分号,jion('')是直接拼起来
reverse() 语法:arrayObject.reverse()功能:用于颠倒数组中元素的顺序;返回值:数组
sort() 语法:arryObject.sort(fn)功能:对数组进行排序;返回值:数组;说明:字符串中sort()方法比较也是字符串,可以接受一个比较函数作为参数;例如:MDN介绍
//升序
array.sort(
function(a,b){
return a-b;
})
//降序
array.sort
(function (a,b) {
return b-a;
});
/*
解释: x,y表示数组中的任意两个元素,
若return > 0,则y前x;若reutrn < 0 ,则x前y后;当x=y时存在浏览器兼容。
简单来说:就是,x-y是按照从小到大排序,y-x是按照从大到小排序。
*/
concact() 语法:array.concat(arrayx,arra..a);功能连接两个或多个数组;返回值:数组
slice() 语法:array.slice.(start,end)功能:从已知数组中选定元素,从start开始截取end本身不截取;当参数为负数时会将传入的值与数组长度相加;返回值:数组;
splice() 语法:array.splice(index,count)
返回值:含有被删除函数的数组;
删除: arr.splice(index,count);删除从index开始的0个或者多个元素,返回被删除元素的数组,count是要删除的项目的数量,可以设置为0 ,如果不设置则默认删除从index到最后的所有项目。
插入: arr.splice(index,0,item1,item2...itemx); 在指定位置插入值,所有参数都不能省略;
替换: arr.splice(index,count,item1,item2...itemx); 在指定的位置插入值,且同时删除任意数量的项;
indexOf() arr.indexOf(searchvalue,startindex)功能:查找;从0开始寻找项;返回值:number 查不到则为-1;;
lastIndexOf()
类似indexOf;有浏览器兼容问题;
常用方法
1. ECMAScript 提供了 Array.isArray()方法。这个方法的目的就是确定一个值是
否为数组
2. keys()、values()和entries()。keys()返回数组索引的迭代器,
values()返回数组元素的迭代器,而 entries()返回
索引/值对的迭代器
3.断言函数:断言函数接收 3 个参数:元素、索引和数组本身。其中元素是数组中当前搜索的元素,索引是当前
元素的索引,而数组就是正在搜索的数组。断言函数返回真值,表示是否匹配。
find()和 findIndex()方法使用了断言函数。这两个方法都从数组的最小索引开始。find()返回
第一个匹配的元素,findIndex()返回第一个匹配元素的索引。这两个方法也都接收第二个可选的参数,
用于指定断言函数内部 this 的值;如果return的话,直接找到元素直接返回,不继续找。
every():对数组每一项都运行传入的函数,如果对每一项函数都返回 true,则这个方法返回 true。
filter():对数组每一项都运行传入的函数,函数返回 true 的项会组成数组之后返回。
forEach():对数组每一项都运行传入的函数,没有返回值。
map():对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组。
some():对数组每一项都运行传入的函数,如果有一项函数返回 true,则这个方法返回 true。
reduce()和 reduceRight()。这两个方法都会迭代数
组的所有项,并在此基础上构建一个最终返回值。
let values = [1, 2, 3, 4, 5];
let sum = values.reduce((prev, cur, index, array) => prev + cur);
alert(sum); // 15
String
字符串对象方法
charAt() 语法:str.charAt(index);功能:返回str中index位置的字符;
charCodeAt() 语法:str.charCodeAt(index);功能:返回str中index位置字符的字符编码;
indexOf()和lastIndexOf() 功能:从一个字符串中搜索给定的字符串,返回子字符串的位置;返回值:数值;没有搜索到返回值为-1;
slice() 语法:str.slice(start,end)功能:截取字符串,从start开始截取end本身不截取;当参数为负数时会将传入的值与字符串长度相加;
substring()和substr() substring功能和slice一样,如果参数是负数时,自动将参数转为0;substr(start,len)从start位置开始截图,len截取字符串的个数。
split() 语法:str.spalit(separator)功能:将一个字符串分成字符串数组;返回值:数组;说明:separato:必需,分隔符。
replace() 语法:str.replace(regexp/substr,replacement);功能:在字符串中用户一些字符替换另一些字符,或替换一个与正则表达式匹配的字串;返回值:String;regex:规定字字符串或要替换的模式的regexp对象,replacement:一个字符串值。
str.toUpperCase()和str.toLowerCase()
将字符串转换为大写和小写;
案例:封装一个将一串英文中每个英文单词的首字符转为大写
常用方法
1.charAt()方法返回给定索引位置的字符
2.charCodeAt()方法可以查看指定码元的字符编码
3.首先是 concat(),用于将一个或多个字符串拼接成一个新字符
4.法:slice()、substr()和 substring()。这3个方法都返回调用它们的字符串的一个子字符串,
而且都接收一或两个参数。第一个参数表示子字符串开
始的位置,第二个参数表示子字符串结束的位置。对 slice()和 substring()而言,第二个参数是提取结
束的位置(即该位置之前的字符会被提取出来)。对 substr()而言,第二个参数表示返回的子字符串数量。
任何情况下,省略第二个参数都意味着提取到字符串末尾。与 concat()方法一样,slice()、substr()
和 substring()也不会修改调用它们的字符串,而只会返回提取到的原始新字符串值
5.indexOf()和 lastIndexOf()这两个方法从字符串中搜索传入的字符串,并返回位置(如果没找到,则返回-1)
6.startsWith()、endsWith()和includes()。这些方法都会从字符串中搜索传入的字符串,
并返回一个表示是否包含的布尔值。
7.trim()方法。这个方法会创建字符串的一个副本,删除前、后所有空格符
8.repeat()方法。这个方法接收一个整数参数,表示要将字符串复制多少次
var str="all time is no time when it is past i am no.1",
newWord=" ";
function firToUpperCase(arr){
var toUpper = arr.split(" ");
var len=toUpper.length;
for(var i=0;i<len;i++){
var word= toUpper[i];
newWord += word.charAt(0).toUpperCase()+word.substr(1)+" ";
console.log(newWord);
}
return newWord;
}
var toUpper= firToUpperCase(str);
document.write(toUpper);
Math
方法:Math.max();Marh.min();Math.ceil:向上取整;Math.floor:向下取整;Math.round:四舍五入取整;abs():取绝对值;Math.random:():生成一个大于等于0小于1的随机数;
求n到m之间的随机整数公式:random=Math.floor(Math.random()*(m-n+1)+n);
/* 猜数字 */
var n =Math.floor(Math.random()*(9-1+1)+1);
while(true){
var input=prompt("请输入1-9你猜的数字");
if (input==n) {
alert("猜对了");
break;
}
else if (input>n) {
alert("输入的数字大了");
} else {
alert("输入的数字小了");
}
}
Date
语法:new Date();
返回值:不传参的情况下,返回当前的日期时间对象。
说明:如果想根据特定的日期时间创建日期对象,必须传入表示该日期的毫秒数或者是一组用逗号隔开的表示年月日时分秒的参数。
常用Date方法
1.Date.parse()方法接收一个表示日期的字符串参数
/* 封装新日期格式函数 */
/* function newGateFormat(){
var weeks=["日","一","二","三","四","五","六"]
var today=new Date(),
week=today.getDay(),
year=today.getFullYear(),
month=today.getMonth(),
day=today.getDate(),
hours=today.getHours(),
minute=today.getMinutes(),
seconds=today.getSeconds();
time=today.getTime();
document.write(year+"年"+(month+1)+"月"+day+"日"+"星期"+weeks[week])
document.write("<br/>"+hours+":"+minute+":"+seconds);
}
/* var year=parseInt(prompt("请输入员工入职年份")),
month=parseInt(prompt("请输入员工入职月份")),
day=parseInt(prompt("请输入员工入职时间"));
function contract(year,month,day){
var time = new Date(year,month-1,day)
var startYear = time.getFullYear();
var startMonth = time.getMonth()+1;
var startDay = time.getDay();
var date = new Date(year+3,month-1,day);
var endyear=date.getFullYear();
var endmonth=date.getMonth()+1;
var endday=date.getDate();
document.write("该员工入职时间是" + startYear + "-" +startMonth+"-"+startDay);
document.write("<br/>"+"该员工合同到期时间是" + endyear+ "-" + endmonth+"-"+endday);
}
contract(year,month,day); */
// 创建一个日期时间对象
var today=new Date();
//today.setFullYear(2017);
//today.setMonth(15);
//console.log(today.getFullYear());
// 50天之后是星期
// 第一种做法
//today.setDate(today.getDate()+50);
//console.log(today.getDay());
// 第二种做法
var weeks=["日","一","二","三","四","五","六"];
var year=today.getFullYear();
var month=today.getMonth();
var day=today.getDate();
// 创建了一个目标日期对象,年,月,日,时,分,秒
var temp=new Date(year+1,month,day);
console.log("50天后的今天是:"+temp.getFullYear()+'-'+(temp.getMonth()+1)+'-'+temp.getDate()+'-'+'星期'+weeks[temp.getDay()]);
全部评论(0)