javascript初学

1.注释

单行//

多行/* */ 

2.+可以拼接字符串

const hhh="abc"+"def";

3.函数

function reusableFunction(){
  console.log("123");
}
reusableFunction(); //123 

let x=function (n){
    return n;
}
console.log(x(3)); //3

带有参数的函数

function functionWithArgs(a,b){
  console.log(a+b);
}
functionWithArgs(1,2);

使用return给函数返回值

function timesFive(x){
  return x*5;
}

箭头函数

const myFunc = () => {
  const myVar = "value";
  return myVar;
}

//只返回一个值可以这样写
const myFunc = () => "value";
//给箭头函数传递参数
const doubler = (item) => item * 2;
doubler(4);
//8

//只有一个参数,可以省略参数外面的括号
const doubler = item => item * 2;

//可以传递多个参数
const multiplier = (item, multi) => item * multi;
multiplier(4, 2);
//8
//给函数传入默认参数
const greeting = (name = "Anonymous") => "Hello " + name;

console.log(greeting("John"));  //Hello John
console.log(greeting());  //Hello Anonymous

4.!==和===不会做类型转换

==,!=,>,<,>=,<=会转换 

5.对象

let dog = {
  name:"abc",
  age:3,
};
let dog = {
  name: "abc",
};
console.log(dog.name);

let dog = {
  name: "Spot",
  numLegs: 4,
  sayLegs:function(){
    return "This dog has " + dog.numLegs + " legs.";
  },
};
console.log(dog.sayLegs());

//this可以代替
let dog = {
  name: "Spot",
  numLegs: 4,
  sayLegs: function() {
    return "This dog has " + this.numLegs + " legs.";
  },
};
console.log(dog.sayLegs());

//构造函数,创建对象
function Dog(){
  this.name="abc";
  this.color="red";
  this.numLegs=4;
}
//创建实例
function Dog() {
  this.name = "Rupert";
  this.color = "brown";
  this.numLegs = 4;
}

let hound=new Dog();
//构造函数,接收参数
function Dog(name,color) {
  this.name=name;
  this.color=color;
  this.numLegs=4;
}
let terrier=new Dog("abc","red");

6.switch

function caseInSwitch(val) {
  let answer = "";
  switch(val){
    case 1:
      answer+="alpha";
      break;
    case 2:
      answer+="beta";
      break;
    case 3:
      answer+="gamma";
      break;
    case 4:
      answer+="delta";
      break;
  }
  return answer;
}

console.log(caseInSwitch(1));

 

default最后一个

function switchOfStuff(val) {
  let answer = "";
  switch(val){
    case 'a':
      answer+="apple";
      break;
    case 'b':
      answer+="bird";
      break;
    case 'c':
      answer+="cat";
      break;
    default:
      answer+="stuff";
      break;
  }
  return answer;
}
console.log(switchOfStuff(1));

多个 

function sequentialSizes(val) {
  let answer = "";
  switch(val){
    case 1:
    case 2:
    case 3:
      answer="Low";
      break;
    case 4:
    case 5:
    case 6:
      answer="Mid";
      break;
    case 7:
    case 8:
    case 9:
      answer="High";
      break;
  }
  return answer;
}

console.log(sequentialSizes(1));

7.模板字符串

``中的换行和空格,都会保留

let a = `1 2`;
console.log(a);//1 2

${}中可以放入js表达式

let x = 2;
let a = `1 ${x} 3`;
console.log(a);//1 2 3

8.类

class Test{
    constructor(){
        this.x = 1;
    }
    testx(){
        console.log('testx');
    }
}

class Child extends Test{
    testy(){
        console.log('testy');
    }
}

let child=new Child();
console.log(child.x); //1
child.testy(); //testy

9.call,apply,bind

const obj = {
    name: 'A',
    greeting1:function(){
        console.log(this.name);
    },
    greeting2:function(city,country){
        console.log(this.name+city+country);
    },
};
  
const person = {
    name: 'B'
};

obj.greeting1.call(person);
//B
obj.greeting2.apply(person,['London','UK']); 
//BLondonUK
obj.greeting2.bind(person,'London')('UK');
//BLondonUK

10.promise

const promise = new Promise((resolve, reject) => {
    resolve('hhh');
    //reject(new Error('error'));
});
promise.then((res) => {
    console.log('resolved',res);
    //resolved hhh
}, (err) => {
    console.log('rejected',err);
});

前面then方法的返回值,会作为后面then的参数 

如果返回的是promise,后面的then会等待它的结束

const promise = new Promise((resolve, reject) => {
    resolve('hhh');
    //reject(new Error('error'));
});
promise.then((res) => {
    console.log('resolved',res);
    //resolved hhh
}) 
.catch((err) => {
    //链式调用,前面的then返回的promise对象,异常会往后传递,可以捕获
    console.log('rejected',err);
});
Promise.resolve('hhh')
.then(res => {
    console.log(1,res);
    //1 hhh
})
Promise.reject(new Error('err'))
.catch(err => {
    console.log(2,err);
    //2 Error: err
})

11.generator

function * hhh(){
    console.log('start');
    try {
        const res = yield 'yyy'
        console.log(res);
    } catch (error) {
        console.log(error);
    }
}
const generator = hhh();
const result = generator.next();//start
console.log(result);//{ value: 'yyy', done: false }
generator.next('two');//two
//generator.throw(new Error('e'));//Error: e

12.async/await

function promise1(){
    return new Promise(resolve=>{
        setTimeout(()=>{
            resolve()
            console.log("promise1");
        },1000)
    })
}
function promise2(){
    return new Promise(resolve=>{
        setTimeout(()=>{
            resolve();
            console.log("promise2");
        },2000)
    })
}
function promise3(){
    return new Promise(resolve=>{
        setTimeout(()=>{
            resolve();
            console.log("promise3");
        },3000)
    })
}

//await碰到promise会阻塞
//promise.all会同时进行
async function asyncTime(){
    console.time("aysncTime");
    await promise1();
    await promise2();
    await promise3();
    console.log("async执行完毕");
    console.timeEnd("aysncTime");
}    
asyncTime();
// promise1
// promise2
// promise3
// async执行完毕
// aysncTime: 6.011s

// console.time("test");
// Promise.all([promise1(),promise2(),promise3()]).then(()=>{
//     console.log("promise.all执行完毕");
//     console.timeEnd("test");
// }).catch(()=>{
//     console.log("promise.all执行失败");
//     console.timeEnd("test");
// })
// promise1
// promise2
// promise3
// promise.all执行完毕
// test: 3.002s

捕获异常

function promise1(){
    return new Promise((resolve,reject)=>{
        //resolve('ok')
        reject('error')
    })
}

async function test(){
    try{
        let res = await promise1();
        console.log(res);
    }catch(err){
        console.log(err);
    }
};

test();//error
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值