一.数据类型
字符串(string)、数字(number)、数组(array)、对象(object)、空(null)、布尔(boolean)、未定义(undefined)、函数(function)
二. 运算符
(1)算术运算:加(+)、减(-)、乘(*)、除(/)、取余(%)、加加(++)、减减(--)
(2)关系运算:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、全等(===)、不等于(!=)、不全等(!==)
全等(===):数据类型和数值都相同
注:NaN代表非数字,它不等于任何值, 也不能做运算
document.write((1==false)+"<br/>")//false
document.write((1===true)+"<br/>")//false
document.write((0!=false)+"<br/>")//false
document.write((0!==false)+"<br/>")//true
alert(NaN == NaN) //flase
(3)逻辑运算:逻辑与(&& )、逻辑或(||)、逻辑非(!)
a |
b |
a&&b |
a||b |
!a |
!b |
true | true | true | true | false | false |
true | false | false | true | false | true |
false | false | false | false | true | true |
false | true | false | true | true | false |
document.write(!(6>2)+'<br/>')//false
document.write((16<789&&12>11)+"<br/>")//true
document.write((16<789||12>11)+"<br/>")//true
(4)位运算:(&)、(|)、(!)、(^)、(>>)、(<<)、(>>>)
document.write((25 & 3)+"<br/>") //1
document.write((25 | 3)+"<br/>") //27
document.write((2 << 3)+"<br/>") //16
document.write((4^3)+"<br/>") //7
(5)赋值运算:(=)、(+=)、(-=)、(*=)、(/=)、(%=)
(6)三目运算:?
三.函数
Number():可以将任意类型尝试转换为数字
alert(Number(true)); //1,Boolean 类型的 true 和 false 分别转换成 1 和 0
alert(Number(25)); //25,数值型直接返回
alert(Number(null)); //0,空对象返回 0
alert(Number(undefined)); //NaN,undefined 返回 NaN
console.log(Number(24))//24
console.log(Number("24"))//24
console.log(Number("a"))//NaN
console.log(Number("a24"))//NaN
console.log(Number("24a"))//NaN
parseFloat():转为浮点数
parseInt():转为整数
console.log(parseInt("a24"))//NaN
console.log(parseInt("24a"))//24
console.log(parseInt("a"))//NaN
console.log(parseInt(24))//24
console.log(parseInt("24"))//24
isNaN(num):判断num变量的值是否是NaN
Math.round():四舍五入函数
Math.random():返回0-1之间的随机数
Math.max(num1,num2):返回较大的数
Math.min(num1,num2):返回较小的数
Math.abs():绝对值
Math.ceil(): 向上取整
Math.floor() : 向下取整
Math.pow(x,y) : x的y次方
Math.sqrt(num) : 开平方
四.字符串
-
字符串的获取方法
- charAt(3) //获取下标为3的字符
- charCodeAt(3) //获取下标为3的字符的编码
- fromCharCode(94) //编码转换成字符
var str="hello,world!"
console.log(str.charAt(3)) //l
console.log(str.charCodeAt(3)) //108
console.log(String.fromCharCode(94)) //^
-
字符串的查找方法
- indexOf:获取字符串值在字符串中首次出现的位置
- lastIndexOf:获取字符串值在字符串中最后一次出现的位置
- replace 替换字符串 stringObj.replace("tmd", "*");
var str1="good good study day day up"
console.log(str1.indexOf("g")) //0
console.log(str1.lastIndexOf("g")) //5
console.log(str1.replace('o','z')) //gzod good study day day up
console.log(str1.replace(/o/ig,'x')) //gxxd gxxd study day day up
console.log(str1.indexOf("day")) //16
-
字符串比较方法
- ==和===
console.log(null==undefined) // 输出:true
console.log(null===undefined) // 输出:false
console.log(null===null) // 输出:true
console.log(undefined===undefined) // 输出:true
console.log(NaN==undefined) // 输出:false
console.log(NaN==null) // 输出:false
console.log(NaN==NaN) // 输出:false
console.log(NaN===NaN) // 输出:false
-
字符串的截取方法
- substring(strat,end):截取字符串时不包括下标为end的元素。end是可选参数,没有时,默认从start到结束的所有字符串。
- slice(strat,end):截取字符串时不包括下标为end的元素。end是可选参数,没有时,默认从start到结束的所有字符串。
- substr(strat,length):第二个参数是子串中的字符数,必须是数值。可以没有
var str="helloworld"
console.log(str.slice(3,6)) //low
console.log(str.substring(3,6)) //low
console.log(str.substr(3,6)) //loworl
-
字符串分割
- split():根据分隔符、拆分成数组
- toLowerCase():转小写、toUpperCase():转大写
var str2="How are you doing today"
console.log(str2.split(" ")) //["How", "are", "you", "doing", "today"]
var str="helloworld"
console.log(str.toUpperCase())//HELLOWORLD
var str1="HELLOWORLD"
console.log(str1.toLowerCase())//helloworld
五.数组
-
创建数组
1.常规方式:
var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
2.简洁方式:var myCars=new Array("Saab","Volvo","BMW");
3.字面:var myCars=["Saab","Volvo","BMW"];
-
数组方法
1.arr.toString():把数组转换为字符串
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var f1=fruits.toString()
console.log(f1) //Banana,Orange,Apple,Mango
2.arr.join(): 将所有数组元素结合为一个字符串。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var f2=fruits.join()
console.log(f2) //Banana,Orange,Apple,Mango
3.arr.pop():删除数组中的最后一个元素,并返回该元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var f3=fruits.pop()
console.log(f3) //Mango
4.arr.shift():删除数组中的第一个元素,并返回该元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var f4=fruits.shift()
console.log(f4) //Banana
5.arr.push():数组末尾添加一个元素,并返回该数组的长度
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var f5=fruits.push("Lemon")
console.log(f5) //5
console.log(fruits) //["Banana", "Orange", "Apple", "Mango", "Lemon"]
6. arr.unshift():数组开头添加一个元素,并返回该数组的长度
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var f6=fruits.unshift("Lemon")
console.log(f6) //5
console.log(fruits) //["Lemon", "Banana", "Orange", "Apple", "Mango"]
7. arr.reverse():翻转数组
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var f7=fruits.reverse()
console.log(f7) // ["Mango", "Apple", "Orange", "Banana"]
8. delete arr[index]:删除元素,用 delete 会在数组留下未定义的空洞,用 pop() 或 shift() 取而代之
var fruits = ["Banana", "Orange", "Apple", "Mango"];
delete fruits[0]
console.log(fruits) // [empty, "Orange", "Apple", "Mango"]
9. arr.splice():拼接数组,用于向数组添加新项,也可以删除元素。
//splice() 方法可用于向数组添加新项,第一个参数定义了应添加新元素的下标(拼接)。第二个参数定义应删除多少元素。其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 0, "Lemon", "Kiwi");
console.log(fruits) //["Banana", "Orange", "Lemon", "Kiwi", "Apple", "Mango"]
10. arr.concat():通过合并(连接)现有数组来创建一个新数组
var arr1 = ["Cecilie", "Lone"];
var arr2 = ["Emil", "Tobias", "Linus"];
var arr3 = ["Robin", "Morgan"];
var myChildren = arr1.concat(arr2, arr3);
console.log(myChildren) //["Cecilie", "Lone", "Emil", "Tobias", "Linus", "Robin", "Morgan"]
11. arr.slice(index):将数组的某个片段切出新数组。
当 slice(index1,index2) 方法赋予两个参数时,它从下标为index1的元素截取,不包括下标为index2的元素
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,4)
console.log(citrus) //["Orange", "Lemon", "Apple"]
-
数组排序
1.冒泡排序
//冒泡排序
var arr1=[23,45,2,456,65,24,223,787]
for(var i=1;i<=arr1.length;i++){
for(var j=0;j<arr1.length-i;j++){
if(arr1[j]>arr1[j+1]){
var temp=null;
temp=arr1[j];
arr1[j]=arr1[j+1];
arr1[j+1]=temp;
}
}
}
console.log(arr1)
2.sort排序:对字符串进行大小写排序
var arr=["aB","Ba","Ct","As","bs","cd"]
arr.sort()
console.log(arr)//["As", "Ba", "Ct", "aB", "bs", "cd"]
例子:
//输出斐波那契额数列数列的前20项(递归)
function f(n){//n为第几项,第n项等于f(n)=f(n-1)+f(n-2)
if(n==0){
return 0;
}else if(n==1){
return 1;
}
return f(n-2)+f(n-1)
}
var arr=[];
for(var i=0;i<20;i++){//i为数组的下标
arr.push(f(i))
}
console.log(arr)
//山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?
var i=15,n=0;//n为挑水的次数
do{
i+=5;
n++;//挑水的次数加1
}while(i<50)
document.write(n)
/*有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置*/
var a=[1,24,52,66,78,98,109]
var left=[];
var right=[];
function btn(){
//获取输入框中的值
var num=document.getElementById("num").value;
for(var i=0;i<a.length;i++){
//如果num大于a[i],就把a[i]放入left数组的最后一位
if(num>=a[i]){
left.push(a[i])
}else{
right.push(a[i])
}
}
left.push(num)//把输入框中输入的数放入left数组的最后一位
//把right数组依次放入left数组的最后一位
for(var k=0;k<right.length;k++){
left.push(right[k])
}
console.log(left)
}
//开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”,既为3的倍数又为5的倍数则替换为单词“FlipFlop”。
var str=""
for(var i=1;i<=100;i++){
if(i%3==0 && i%5!=0){
document.write("Flip"+'\n')
}else if(i%5==0 && i%3!=0){
document.write("Flop"+'\n')
}else if(i%3==0 && i%5==0){
document.write("FlipFlop"+'\n')
}else{
document.write(i+'\n')
}
}
document.write(str+"<br/>")
/*已知字符串 “a,a,b,c,c,d”去掉重复的字符,使结果显示 abcd;
统计每个字符出现的次数,结果显示a2、b1、c2、d1
找出出现的次数最多的那个字母 和他相应的次数;
找出出现的次数最少的那个字母 和他相应的次数*/
var str="a,a,b,c,c,d";
var arr=str.split(",")
var obj={}//定义了一个空对象
for(var i in arr){//for in循环,i为arr的下标,arr[i]:数组里的内容
var n=arr[i] //n=arr[i]:数组里的内容
if(!obj[n]){
obj[n]=1 //obj[n]的值为1
}else{
obj[n]++ //obj={a:2,b:1,c:2,d:1}
}
}
var arr1=[]
for(var j in obj){
arr1.push(j) //arr1=["a","b","c","d"]
var str1=arr1.join("")
}
console.log(str1)//abcd
var maxA=null;//出现的次数最多的那个字母
var maxCount=0;//出现的次数最多的那个字母的次数
var minA=null;//出现的次数最少的那个字母
var minCount=str.length;//出现的次数最少的那个字母的次数
for(var k in obj){ //for in循环,k为obj的属性名,
console.log(k+obj[k]) //a2 b1 c2 d1
if(maxCount<obj[k]){
maxCount=obj[k]
maxA=k
}
if(minCount>obj[k]){
minCount=obj[k]
minA=k
}
}
console.log("出现的次数最多的那个字母为:"+maxA+",出现的次数最多的那个字母的次数为:"+maxCount)
console.log("出现的次数最少的那个字母为:"+minA+",出现的次数最少的那个字母的次数为:"+minCount)
六.对象
-
创建对象
//方法一
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
//方法二
var person = new Object();
person.firstName = "Bill";
person.lastName = "Gates";
person.age = 50;
person.eyeColor = "blue";
-
对象方法
对象也可以有方法
var man=new Object();
man.age=20;
man.name="张三";
man.height="180cm"
man.talk=function(){
document.write("我的名字是:"+man.name+"我的年龄是:"+man.age+"我的身高是:"+man.height)
}
man.talk()
//第二种方法
var man1={name:"张三",age:20,height:"180cm",talk:function(){
document.write("我的名字是:"+man1.name+"我的年龄是:"+man1.age+"我的身高是:"+man1.height)
}}
man1.talk()
-
使用this关键字表示当前对象
var obj={ f:function(){ return this.y }, y:1.2 } var y=obj.f() console.log(y) //1.2