JS—基础

 一.数据类型

字符串(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

truetruetruetruefalsefalse
truefalsefalsetruefalsetrue
falsefalsefalsefalsetruetrue
falsetruefalsetruetruefalse
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) : 开平方

四.字符串

  • 字符串的获取方法

    1. charAt(3) //获取下标为3的字符
    2. charCodeAt(3) //获取下标为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)) //^ 
  • 字符串的查找方法

    1. indexOf:获取字符串值在字符串中首次出现的位置
    2. lastIndexOf:获取字符串值在字符串中最后一次出现的位置
    3. 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
  • 字符串比较方法

    1. ==和===
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
  • 字符串的截取方法

    1. substring(strat,end):截取字符串时不包括下标为end的元素。end是可选参数,没有时,默认从start到结束的所有字符串。
    2. slice(strat,end):截取字符串时不包括下标为end的元素。end是可选参数,没有时,默认从start到结束的所有字符串。
    3. 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
  • 字符串分割

    1. split():根据分隔符、拆分成数组
    2. 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

     

 

©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页