Почему 2> & 1 должны идти перед | (труба), но после «> myfile» (перенаправить в файл)?

Подъем - поведенческая концепция JavaScript. Подъем (скажем, перемещение) - это концепция, которая объясняет, как и где должны быть объявлены переменные.

В JavaScript переменная может быть объявлена ​​после того, как она была использована, потому что объявления функций и объявления переменных всегда перемещаются («поднимаются») невидимо в верхнюю часть их области с помощью интерпретатора JavaScript.

В большинстве случаев мы сталкиваемся с двумя типами подъема.

1. Подвижная декларация подъема

Понятно, что этот фрагмент кода.

 a = 5; // Assign 5 to a
 elem = document.getElementById("demo"); // Find an element 
 elem.innerHTML = a;                     // Display a in the element
 var a; // Declare a
  //output-> 5

Здесь объявление переменной a будет отображаться невидимым с помощью интерпретатора javascript во время компиляции. Таким образом, мы смогли получить значение a. Но этот подход декларации переменных не рекомендуется, так как мы должны объявлять переменные сверху так же, как это.

 var a = 5; // Assign and declare 5 to a
 elem = document.getElementById("demo"); // Find an element 
 elem.innerHTML = a;                     // Display a in the element
  // output -> 5

рассмотрим другой пример.

  function foo() {
     console.log(x)
     var x = 1;
 }

на самом деле интерпретируется так :

  function foo() {
     var x;
     console.log(x)
     x = 1;
  }

В этом случае x будет неопределенным

Не имеет значения, выполнил ли код, который содержит объявление переменной. Рассмотрим этот пример.

  function foo() {
     if (false) {
         var a = 1;
     }
     return;
     var b = 1;
  }

Эта функция оказывается такой.

  function foo() {
      var a, b;
      if (false) {
        a = 1;
     }
     return;
     b = 1;
  }

В объявлении переменной только танки с разрешающей способностью, а не назначение.

  1. Объявление объявления функции

В отличие от подъема переменной тело функции или назначенное значение также будут подняты. Рассмотрим этот код

 function demo() {
     foo(); // this will give error because it is variable hoisting
     bar(); // "this will run!" as it is function hoisting
     var foo = function () {
         alert("this would not run!!");
     }
     function bar() { 
         alert("this will run!!");
     }
 }
 demo();

. Теперь, когда мы поняли, как поднимать значение переменной, так и функцию, давайте разобраться в этом коде.

var a = 1;
function b() {
  a = 10;
  return;
   function a() {}
}
b();
alert(a);

Этот код окажется таким.

var a = 1;                 //defines "a" in global scope
 function b() {  
   var a = function () {}; //defines "a" in local scope 
    a = 10;                 //overwrites local variable "a"
    return;      
 }       
 b();       
 alert(a); 

Функция a () будет иметь локальную область внутри b (). a () будет перемещен в начало при интерпретации кода с его определением (только в случае подъема функции), так что теперь у него будет локальная область действия и, следовательно, не повлияет на глобальную область while, имеющую собственную область внутри функции b () .

13
задан Rob Bednark 31 January 2015 в 02:03
поделиться