2D-массив typeof становится String.Зачем? - PullRequest
0 голосов
/ 27 февраля 2019
  • У меня есть нечто, похожее на 2d-массив.
  • typeof некоторый массив всегда будет возвращать object.
  • Итак, почему в следующем примере тип возвращаемого значения равен string?

<script>

  var x = [typeof x, typeof y][1];
  console.log(typeof x);

</script>

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

[typeof x, typeof y] оценивается как ["undefined", "undefined"].[typeof x, typeof y][1] оценивается как "undefined".

0 голосов
/ 27 февраля 2019

Ну, typeof возвращает строку, поэтому любая typeof typeof также будет строкой:

var x = [typeof x, typeof y][1]; //x is undefined when this is run
console.log(typeof x); //typeof "undefined" == string

В приведенном выше коде [typeof x, typeof y] равно ["undefined", "undefined"].

Вот простая демонстрация:

var x = [typeof x, typeof y];
console.log(x); //returns ["undefined", "undefined"]
var myVar = x[1];
console.log(myVar); //returns "undefined"
console.log(typeof myVar); //returns string, because "undefined" is a string
0 голосов
/ 27 февраля 2019

typeof <expression> оценивается как строка, поэтому

[typeof x, typeof y]

, независимо от того, что есть x и y, преобразуется в массив типа

[<someString>, <someString>]

Доступ к[1]-й индекс этого массива даст вам одну из этих строк, поэтому typeof <someString> приведет к 'string'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...