if语句
语法和Java类似
var score=90;
if(score<60){
alert('D')
}else if (score>59&&score<75){
alert('C')
}else if (score>74&&score<90){
alert('B')
}else {
alert('A')
}
while
和Java语法类似,不在赘述
while(score<60){
alert('测试while循环');
score=score+60;
}
for语句
for (let i = 0; i <100 ; i++) {
console.log(i);
}
forEach
var arr=[1,2,3,4,5,7,23,21,35,66];
arr.forEach(function (value) {
console.log(value)
})
for…in
for(var num in arr){
console.log(arr[num])
}
Map和Set
Map:
var map=new Map([['zhangsan',18],['lisi',19],['wangwu',20],['wangwu',22]]);
var name=map.get('lisi');
console.log(name)
map.set('hh',21);
map.delete('wangwu');
Set
var set=new Set([1,2,3,4,4,5,5]);
set.add(6);
set.delete(1);
map和set的遍历
前面介绍了for…in,但for in 只能获取元素的下标位置,所以现在介绍另一种遍历方式,for…of,使用for…of遍历数组能够直接的获取到数组元素。
var map=new Map([['zhangsan',18],['lisi',19],['wangwu',20],['wangwu',22]]);
for (var x of map){
console.log(x)
}
set的遍历方式也同理:
var set=new Set([1,2,3,4,4,5,5]);
for (var num of set){
console.log(num);
}
函数
定义函数
function 函数名{
…
…
}
arguments
此关键字代表传递进来的所有参数,是一个数组。
我们定义一个函数,当函数的参数与传进的参数不匹配时,不取多余的参数
'use strict'
function f(x,y) {
console.log('x='+x);
console.log('y='+y);
for (let i = 0; i <arguments.length ; i++) {
console.log(arguments[i]);
}
}
rest
rest可以用来获取除函数定义外的多余参数
定义:只能写在函数定义参数的最后面
function f(a,...rest){
…………
}
function f(x,...rest) {
console.log('x='+x);
console.log(rest);
}
使用:
除了函数定义时的x,多余的参数都被存放在rest
变量的作用域
在js中,var定义的变量是有作用域的,当变量定义在函数体中时,在函数体外无法使用此变量。
在不同的函数体内,变量是相互独立的,即,在不同的函数内部定义同名的变量是互不影响的。
以下代码中的两个x变量是互不影响的:
function f() {
var x=1;
}
function f1() {
var x=2;
}
当函数嵌套使用时内部函数可以访问外部函数的成员,反之则不行
function f() {
var x=1;
function f1() {
var y=x+1;
}
var z=y+1;
console.log(z);//访问不到f1中的y
}
假如内部函数的变量和外部函数变量重名,则使用内部的变量(函数查找变量从内向外查找,先查找内部函数的变量,如果外部函数有与内部函数重名的,那么内部函数会屏蔽外部函数的同名变量)
提升变量作用域 :
function f() {
var x='w'+y;
console.log(x);
var y='s';
}
f();
在js中自动提升了y的声明,但没提升y的赋值:
相当于:
function f() {
var y;
var x='w'+y;
console.log(x);
y='s';
}
f();
写代码使用时一般在函数开头将变量定义出来:
function f(){
var a,b,c;//事先定义好变量,后面用到再赋值
a='x';
全局函数
方法
定义方法
方法就是把函数放在对象里面,对象里只有属性和方法
var person={
name:'zhangsan',//属性
birth:2000,//属性
age: function () {//方法
var now=new Date().getFullYear();
return now-this.birth;
}
}
调用方法时需要加括号:
person.age();
属性可以值接调用不用加括号:
person.name;
person.birth;
apply
在js中,this可以改变自己所指向的对象
function getAge() {
var now=new Date().getFullYear();
return now-this.birth;
}
var person={
name:'zhangsan',//属性
birth:2000,//属性
age: getAge
}
var person1={
name:'lisi',//属性
birth:2010,//属性
age: getAge
}
getAge.apply(person1,[]);
当getAge.apply(person,[])参数指向person对象时,返回值为22
当getAge.apply(person,[])参数指向person1对象时,返回值为12
内部对象
Date类
基本使用
var now=new Date();
now.getFullYear();//年
now.getMonth();//月
now.getDate();//日
now.getHours();//时
now.getMinutes();//分
now.getSeconds();//秒
now.getDay();//星期几
形式转换
now.toLocaleString()
'2022/8/6 22:14:06'
now.toGMTString()
'Sat, 06 Aug 2022 14:14:06 GMT'
JSON
json是什么?
在js中一切都是对象,任何js支持的类型都能用json来表示
json字符串和js对象的区别
json字符串:var json='{"name":"zhangsan ","age":20,"sex":"女"}'
js对象var ob={name:'zhangsan',age:20,sex:'男'}
格式:
对象都用:{}
数组都用:[]
所有的键值对都用: key:value
json字符串和对象的转换:
将对象转换为json字符串:
JSON.stringify(对象);
var ob={
name:'zhangsan',
age:20,
sex:'男'
}
var jsonob=JSON.stringify(ob);
json字符串转js对象:
var jsonr=JSON.parse('{"name":"zhangsan ","age":20,"sex":"女"}')
面向对象编程
class继承(ES6之后才有)
* 定义类 ,属性,方法
class student {
constructor(name,age) {
this.name=name;
this.age=age;
}
play(){
alert(name+'play ball');
}
}
var stu=new student('lisi',18);
继承:
class student {
constructor(name,age) {
this.name=name;
this.age=age;
}
play(){
alert(name+'play ball');
}
}
class wangw extends student{
constructor(name,age) {
super(name);
this.age=age;
}
myage(){
alert(this.age+"years old");
}
}
var stu=new wangw('lisi',18);