Странный синтаксис методов Числа в JavaScript

Вы не говорите, что Вы хотите сделать с выведенным файлом.

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

.mode csv 
-- use '.separator SOME_STRING' for something other than a comma.
.headers on 
.out file.csv 
select * from MyTable;

, Если Вы хотите повторно вставить в различную базу данных SQLite тогда:

.mode insert <target_table_name>
.out file.sql 
select * from MyTable;
6
задан Andreas Grech 7 December 2009 в 16:21
поделиться

5 ответов

Это синтаксическая ошибка, поскольку вы представляете число. Таким образом могут работать строки, но не числа, потому что точка, следующая сразу за числом, символизирует десятичное значение. Символ после . вызывает ошибку.

10
ответ дан 8 December 2019 в 13:00
поделиться

В большинстве ответов уже говорилось, что точка после числового литерала считается частью этого числа как разделитель дробей. Но если вы по-прежнему хотите использовать точку в качестве оператора, то быстрое и простое решение - оставить пустое место между числом и пробелом.

2 .isIn(1,2,3,4,5) // <- notice the space between 2 and .
7
ответ дан 8 December 2019 в 13:00
поделиться

Джош был прав, но вам не нужно использовать переменную, чтобы использовать метод числа , хотя обычно это удобнее делать.

5.isIn(1,2,3,4,5) returns an error

5.0.isIn(1.2.3.4.5) returns true, as does
(5).isIn(1,2,3,4,5)
2
ответ дан 8 December 2019 в 13:00
поделиться

Хотя различие часто не очевидно из-за автоматического преобразования типов, JavaScript поддерживает ряд примитивных типов, а также объекты:

var foo = 10;
var bar = new Number(10);
alert(foo.toString(16)); // foo is automatically wrapped in an object of type Number 
                         // and that object's toString method is invoked
alert(bar.toString(16)); // bar is already an object of type Number, 
                         // so no type conversion is necessary before 
                         // invoking its toString method
var foo2 = "foo";
var bar2 = new String("foo");
alert(typeof foo2);      // "string" - note the lowercase "s", not a String object
alert(typeof bar2);      // "object"

alert(typeof true)       // "boolean"
alert(typeof new Boolean(true)) // "object"

и кое-что, что действительно сбивает с толку:

// the next line will alert "truthy"
alert("Boolean object with value 'false'" + (new Boolean(false) ? " is truthy" : " is falsy"));
// the next line will alert "falsy"
alert("boolean primitive with value 'false'" + (false ? " is truthy" : " is falsy"));

Хотя полагаясь на автоматическое преобразование типов, жизнь немного упрощается; в глубине души всегда нужно хорошо понимать, к каким типам на самом деле относятся ваши примитивные значения и объекты; удивительно большое количество ошибок JS возникает из-за того, что люди не понимают, что, например, что-то похожее на число на самом деле является строкой или что какая-то операция, которую они выполнили, привела к чему-то, что раньше содержало число, имеющее было присвоено новое значение, которое является строкой или объектом.

РЕДАКТИРОВАТЬ: чтобы более точно ответить на исходный вопрос, теперь я понимаю, что не ответил явно: 10.foo () вызовет синтаксическую ошибку как . рассматривается как десятичная точка, а foo () не является допустимой последовательностью символов для анализа как числа. (10) .foo () будет работать, поскольку закрывающие скобки (10) составляют всю конструкцию перед . в одно выражение. Это выражение вычисляется и возвращает примитивное числовое значение 10 . Затем . рассматривается как обработка этого примитивного значения в контексте объекта, поэтому оно автоматически упаковывается в объект типа Number (это автоматическое преобразование типа в действии). Затем делается ссылка на свойство foo этого объекта, которое находится в его цепочке прототипов;

0
ответ дан 8 December 2019 в 13:00
поделиться

Насколько я понимаю, числа являются литералами, а не объекты. Однако, когда вы определяете переменную как число, она становится новым объектом Number ().

Таким образом, выполняется следующее:

var x = 10;

То же самое, что и идти;

var x = new Number(10);

Что касается второго примера; Я могу только предположить, что заключение числа в скобки заставило компилятор JavaScript предположить, что значение является анонимным объектом Number (). Думаю, в этом есть смысл ...

-1
ответ дан 8 December 2019 в 13:00
поделиться