Javascript日志和控制台

时间:2020-05-21 00:32:40

标签: javascript

我不明白这个简单的代码段。 应该输出什么?

import React, { Component } from 'react';
import { DatePicker } from 'antd';

class DeliveriesDatePicker extends Component {
  constructor(props) {
    super(props)
    this.state = {
      day : ''
    };
  }

  render() {
    function onChange(date, dateString) {
      this.setState( { day: dateString } );
      console.log(date, dateString);
    }
    date = this.state.day
    return (
      <div className="Calendario">
        <DatePicker onChange={onChange} />
      </div>
    );
  }
}
export default DeliveriesDatePicker
export let date;

3 个答案:

答案 0 :(得分:1)

代码:

var scope = "global";
    function f() {
        console.log(scope);
        var scope = "local";
        console.log(scope);
    }

输出:

undefined

但是如果您在代码末尾添加f()

undefined
local

只需尝试一下!

var scope = "global";
    function f() {
        console.log(scope);
        var scope = "local";
        console.log(scope);
    }

f()

答案 1 :(得分:1)

如果您致电f(),则将注销undefined"local"

之所以会发生这种情况,是因为函数(本地)作用域是如何工作的,它将首先“读取”函数,并且由于在函数内定义了变量“ scope”,因此它将变量(scope)的所有实例视为本地范围。

然后由于未在第一个console.log调用中定义该局部作用域变量,您将得到未定义。

https://www.w3schools.com/js/js_scope.asp

答案 2 :(得分:0)

致电f()时,预期输出为

undefined
local

为什么?因为有一个叫做variable hoisting的东西。

您的代码有效地变为:

var scope = "global";
function f() {
    // variable declaration has been hoisted
    var scope;
    console.log(scope); // undefined
    scope = "local";
    console.log(scope); // local
}