javaScript基础知识点

124 阅读2分钟
1.函数参数默认值
///es5
function test(a,b){
    var a=arguments[0] || 1
    var b=arguments[1] || 2
    console.log(a);
    console.log(b);
}
test()//1 2
test(3,4)//3 4//es6
function test(a=1,b=2){
    console.log(a);
    console.log(b);
}
test()//1 2
test(3,4)//3 4
2.递归
function fact(n){
    if(n===1){
        return 1  
    }
    return n*fact(n-1)
}
console.log(fact(5));
​
// 解析:
当n===1时,执行队列,也就是fact(1),不写结束条件的话就是死循环,栈溢出。
fact(5)=5*fact(4)
fact(4)=4*fact(3)
fact(3)=3*fact(3)
fact(2)=2*fact(1)
3.变量提升

1.检查通篇语法错误 2.预编译 3.解析一行,执行一行

console.log(a);  //语法报错console.log(a); //undefined ,变量提升
var a
​
console.log(a); //undefined ,变量提升,但是赋值不提升
var a=10
4.预编译

函数执行上下文

1.寻找形参和变量声明

2.实参赋值给形参

3.寻找函数声明并赋值

4.执行

function test(a){
    console.log(a);
    var a=1 
    console.log(a);
    function a(){}
    console.log(a);
    var b=function(){}
    console.log(b);
    function d(){}
}
test(2)
​
执行结果:
ƒ a(){}
demo.html:24 1
demo.html:26 1
demo.html:30 ƒ (){}
​
// 解析
第一步:寻找形参和变量声明
{
    a:undefined
    b:undefined
}
​
第二步:实参赋值给形参
{
    a:undefined ==>2
    b:undefined
}
​
第三步:寻找函数声明并赋值
{
    a:undefined ==>2 ==>function a(){}
    b:undefined
    d:function d(){}
}
​
第四步:执行
{
    a:undefined ==>2 ==>function a(){} ==>1
    b:undefined ==>function(){}
    d:function d(){}
}

全局执行上下文

1.寻找变量声明

2.寻找函数声明并赋值

3.执行

var a=1
function a(){}
console.log(a); 
​
执行结果:1
​
// 解析
第一步:寻找变量声明
{
    a:undefined
}
​
第二步:寻找函数声明并赋值
{
    a:undefined ==>function a(){}
}
​
第三步:执行
{
     a:undefined ==>function a(){}==>1
}
​
5.构造函数
1.基本使用
function Person(){
    this.name="foo";
    this.age=18;
    this.say=function(){
        console.log("I am saying");
    }
}
const person1=new Person()
const person2=new Person()
console.log(person1); //Person{...}
console.log(person2); //Person{...}
console.log(person1===person2);  //false//又称工程函数,在构造函数没有执行的时候,this指向windos,当执行的时候,this指向他的实例化对象person,每一个实例化对象都是不同的,互补影响
​
​
2.传参
function Person(options){
    this.name=options.name;
    this.age=options.age;
    this.say=function(){
        console.log("I am saying");
    }
}
const person=new Person({
    name:'foo',
    age:18
})
console.log(person);//Person{...}

\