Coder Social home page Coder Social logo

error's People

Watchers

 avatar  avatar

error's Issues

js Event Loop

setTimeout(function(){
     console.log('定时器开始啦')
 });
 
 new Promise(function(resolve){
     console.log('马上执行for循环啦');
     for(var i = 0; i < 10000; i++){
         i == 99 && resolve();
     }
 }).then(function(){
     console.log('执行then函数啦')
 });
 
 console.log('代码执行结束');

实际输入出结果:

马上执行for循环啦
代码执行结束
执行then函数啦
定时器开始啦

理论:
macro-task(宏任务):包括整体代码script,setTimeout,setInterval
micro-task(微任务):Promise,proc

386112937-5a5763d9ef823_articlex
ess.nextTick

按照这种分类方式:JS的执行机制是

执行一个宏任务,过程中如果遇到微任务,就将其放到微任务的【事件队列】里
当前宏任务执行完成后,会查看微任务的【事件队列】,并将里面全部的微任务依次执行完

掉坑的题

function Foo() {
    getName = function () { alert (1); };
    return this;
}
Foo.getName = function () { alert (2);};
Foo.prototype.getName = function () { alert (3);};
var getName = function () { alert (4);};
function getName() { alert (5);}
 
//请写出以下输出结果:
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();

Wscats/articles#85

综合考核变量提升,this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级等知

函数表达和函数声明式

  • 函数声明会被提升到作用域的最前面,即使写代码的时候是写在最后面,也还是会被提升至最前面
  • 而用函数表达式创建的函数是在运行时进行赋值,且要等到表达式赋值完成后才能调用
getName()//oaoafly
var getName = function() {
	console.log('wscat')
}
getName()//wscat
function getName() {
	console.log('oaoafly')
}
getName()//wscat

分解过来就是

var getName
function getName() {
	console.log('oaoafly')
}
getName = function() {
	console.log('wscat')
}

Javascript 中 apply、call、bind 的区别

apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
apply 、 call 、bind 三者都可以利用后续参数传参;
bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

apply、call只是接收参数形式不一样
call(this,arg1,arg2)
apply(this, [arg1, arg2])

function fruits() {}
 
fruits.prototype = {
    color: "red",
    say: function() {
        console.log("My color is " + this.color);
    }
}
 
var apple = new fruits;
apple.say();    //My color is red



banana = {
    color: "yellow"
}
apple.say.call(banana);     //My color is yellow
apple.say.apply(banana);    //My color is yellow
apple.say.bind(banana)

变量作用域和变量提升

<script>  
   var a =1;  
   function test(){  
      console.log(a);  
      var a = 2;  
      console.log(a);  
   }  
   test();  
   console.log(a);  
</script>

输出:undefined,2,1
原因:变量作用域和变量提升的问题

在Javascript中,变量进入一个作用域可以通过下面四种方式:

  • 语言自定义变量:所有的作用域中都存在this和arguments这两个默认变量
  • 函数形参:函数的形参存在函数作用域中
  • 函数声明:function foo() {}
  • 变量定义:var foo

变量的上升(Hoisting)只是其定义上升,而变量的赋值并不会上升。

function f() { console.log('I am outside!'); }
if(true) {
   // 重复声明一次函数f
   function f() { console.log('I am inside!'); }
}
f();

上面代码在 'use strict';输出的结果不一样

  • in 'use strict'
    'I am outside!'
  • in no 'use strict'
    'I am inside!'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.