что & ldquo; var now = + new Date () & rdquo; сделать в javascript [дубликат]

С помощью Java 8 вы можете использовать новый removeIf метод . Применимо к вашему примеру:

Collection coll = new ArrayList();
//populate

coll.removeIf(i -> i.intValue() == 5);

242
задан Starx 1 March 2013 в 05:15
поделиться

12 ответов

r = +_;
  • + пытается отличить любое число _ от числа.
  • _ - это только имя переменной (а не оператор), это может быть a, foo и т. д.

Пример:

+"1"

отличить «1» до чистого номера 1.

var _ = "1";
var r = +_;

r теперь 1, а не "1".

Кроме того, согласно странице MDN по арифметическим операторам :

Унарный плюс оператор предшествует своему операнду и оценивает его операнд, но пытается преобразовать его в число, если оно еще не было. [...] Он может преобразовывать строковые представления целых чисел и чисел с плавающей точкой, а также нестроковые значения true, false и null. Поддерживаются целые числа в десятичных и шестнадцатеричных форматах ("0x" -prefixed). Отрицательные числа поддерживаются (хотя и не для hex). Если он не может разобрать конкретное значение, он будет оценивать значение NaN.

Также отмечается, что

унарный плюс является самым быстрым и предпочтительным способом преобразования чего-то в число

381
ответ дан Luca 19 August 2018 в 12:45
поделиться
  • 1
    Действительно ли это означает, что он отличен от числа, или +_ действительно означает 0+_, и в этом случае _ нужно передать перед добавлением в 0? – colincameron 28 February 2013 в 12:06
  • 2
  • 3
    @ c.cam108 - Нет, они не ведут себя одинаково. Унарный плюс отличает значение к числу, но двоичный плюс не делает: +'12' === 12 (результат - число), но 0 + '12' === '012' (результат - строка). Обратите внимание, однако, что 0 - '12' === -12. – Kobi 28 February 2013 в 12:58
  • 4
    & Quot; 1 & Quot; - "2" === -1 – Juzer Ali 28 February 2013 в 17:10
  • 5
    @juzerali Конечно, но это не хорошая практика. Попробуйте использовать дополнение;) – Izkata 28 February 2013 в 19:13

Будет присвоено новое значение левой стороне переменной.

var a=10;
var b="asg";
var c=+a;//return 10
var d=-a;//return -10
var f="10";

var e=+b;
var g=-f;

console.log(e);//NAN
console.log(g);//-10
5
ответ дан Amrendra 19 August 2018 в 12:45
поделиться

В этом выражении:

r = +_;
  • '+' действует здесь как унарный оператор, который пытается преобразовать значение правильного операнда. Он не преобразует операнд, а оценивает значение. Таким образом, _ останется «1», если он был первоначально, но r станет чистым номером.

Рассмотрите эти случаи, хотите ли вы применить + для числового преобразования

+"-0" // 0, not -0
+"1" //1
+"-1" // -1
+"" // 0, in JS "" is converted to 0
+null // 0, in JS null is converted to 0
+undefined // NaN
+"yack!" // NaN
+"NaN" //NaN
+"3.14" // 3.14

var _ = "1"; +_;_ // "1"
var _ = "1"; +_;!!_ //true
var _ = "0"; +_;!!_ //true
var _ = null; +_;!!_ //false

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

2
ответ дан Arman McHitarian 19 August 2018 в 12:45
поделиться

+_ почти эквивалентен parseFloat(_). Обратите внимание, что parseInt остановится на не числовом символе, таком как точка, тогда как parshFloat не будет.

EXP:

    parseFloat(2.4) = 2.4 
vs 
    parseInt(2.4) = 2 
vs 
    +"2.4" = 2.4

Exp:

var _ = "3";
    _ = +_;

console.log(_); // will show an integer 3

Очень немного отличий:

3
ответ дан Community 19 August 2018 в 12:45
поделиться
  • 1
    Я думаю, что в первой строке вы хотите сказать parseInr(_) вместо parseFloat(_) ? – Grijesh Chauhan 20 July 2013 в 10:11
  • 2
    Нет, я имел в виду float, потому что parseInt остановится на не числовом символе, parshFloat не будет. EXP: parseFloat(2.4) = 2.4 vs parseInt(2.4) = 2. – Brian 20 July 2013 в 10:58
  • 3
    oh Получил это! добавлена ​​новая информация .. хороший ответ! – Grijesh Chauhan 20 July 2013 в 11:01

Проще говоря, +_ эквивалентно с использованием конструктора Number () .

Фактически, он даже работает с датами:

var d = new Date('03/27/2014');
console.log(Number(d)) // returns 1395903600000
console.log(+d) // returns 1395903600000

DEMO: http://jsfiddle.net/dirtyd77/GCLjd/


Дополнительная информация также может быть найдена on MDN - раздел Unary plus (+) :

Оператор унарного плюса предшествует своему операнду и вычисляет его операнд, но пытается преобразовать его в число, если оно еще не , Хотя унарное отрицание (-) также может конвертировать не числа, унарный плюс является самым быстрым и предпочтительным способом преобразования чего-либо в число, поскольку он не выполняет никаких других операций над номером. Он может преобразовывать строковые представления целых чисел и float, а также значения, отличные от строки, true, false и null. Поддерживаются целые числа в десятичных и шестнадцатеричных форматах («0x» -предоставляемые). Отрицательные числа поддерживаются (хотя и не для hex). Если он не может разобрать определенное значение, он будет оценивать NaN.

2
ответ дан Dom 19 August 2018 в 12:45
поделиться

=+ - фактически два оператора = - назначение, а + и _ - имя переменной.

like:

i = + 5;
or 
j = + i;
or 
i = + _;

Мои следующие коды помогут вам показать использование =+ для преобразования строки в int . Например:

y = +'5'
x = y +5
alert(x);

выходы 10

use: Таким образом, здесь y является int 5 из-за =+ в противном случае:

y = '5'
x = y +5
alert(x);

выходы 55

Где в качестве _ является переменной.

_ = + '5'
x = _ + 5
alert(x)

выходов 10

Кроме того, было бы интересно узнать, что вы также можете достичь того же с помощью ~ (если строка int string (float будет раундом от int) )

y = ~~'5'  // notice used two time ~
x = y  + 5
alert(x);

также выдает 10

~ побитовое NOT: инвертирует биты его операнда , Я делал дважды без каких-либо изменений в величине.

53
ответ дан Grijesh Chauhan 19 August 2018 в 12:45
поделиться
  • 1
    Я часто использую x|0 для преобразования double в int; однако это, а также использование «~» имеет штраф за ограничение чисел & lt; 2 ^ 32. + & Quot; 2e15 & Quot; не. – Aki Suihkonen 1 March 2013 в 08:36
  • 2
    @AkiSuihkonen Да, хорошо, я считаю, x|0 еще быстрее, чем +. Правильно ? хорошая техника :). (2) Я использую ~, чтобы показать OP, что + - это не только знак, который можно использовать ( i я использую + ). – Grijesh Chauhan 1 March 2013 в 08:39
  • 3
    Трудно сказать - есть jsperf, хотя есть желание измерить его. OTOH эти два оператора имеют совершенно другое значение. Если требуется только число (а не целое число) '+', то в любом случае один символ будет короче. – Aki Suihkonen 1 March 2013 в 08:58
  • 4
    На самом деле я только что протестировал его jsperf - 18M ops для '| 0', 19M ops для '+'; производительность, вероятно, будет отличаться от браузера к браузеру. jsperf.com/strtoint – Aki Suihkonen 1 March 2013 в 09:31
  • 5
    @AkiSuihkonen О, мой, просто тест jsperf в Firefox, огромная разница .. | намного быстрее. – Tapirboy 1 March 2013 в 15:31

= + _ будет отличать _ в число.

Итак,

var _ = "1",
   r = +_;
console.log(typeof r)

выведет номер.

12
ответ дан Harsha Ivaturi 19 August 2018 в 12:45
поделиться

Я полагаю, вы имеете в виду r = +_;? В этом случае это преобразование параметра в Number. Скажем, _ - '12 .3 ', затем +'12.3' возвращает 12.3. Поэтому в цитируемом заявлении +_ присваивается значение r.

9
ответ дан KooiInc 19 August 2018 в 12:45
поделиться

Это не =+. В javascript + означает, что + возвращает его в число.

+'32' возвращает 32.

+'a' возвращает NaN.

Таким образом, вы можете использовать isNaN(), чтобы проверить, можно ли его изменить на номер.

16
ответ дан Ovilia 19 August 2018 в 12:45
поделиться

_ - это просто имя переменной, переданное как параметр функции hexbin.radius и +, переданное в число

. Позвольте мне сделать так же, как и ваша функция.

var hexbin = {},r  ;

hexbin.radius = function(_) {
   if (!arguments.length)
      return r;
   console.log( _ , typeof _ )    
   r = +_;
   console.log( r , typeof r , isNaN(r) );   
}

и запустить эту примерную функцию, которая выводит

hexbin.radius ("1");

1 string
1 number false 

hexbin.radius (1);

1 number
1 number false

hexbin.radius ([]);

[] object
0 number false

hexbin.radius ('a');

a string
NaN number true

hexbin.radius ( {});

Object {} object
NaN number true

hexbin.radius (true);

true boolean
1 number false
6
ответ дан rab 19 August 2018 в 12:45
поделиться
  • 1
    Ответил очень поздно, но очень хороший ответ +. – Grijesh Chauhan 1 March 2013 в 14:46

Это подлый.

Важно понять, что символ подчеркивания здесь - это имя переменной, а не оператор.

Знак плюса перед этим получает положительное числовое значение подчеркивания, т. е. эффективно отличает переменную подчеркивания как int. Вы могли бы добиться такого же эффекта с помощью parseInt(), но, вероятно, использование знака плюса используется здесь, потому что оно более кратким.

И это просто оставляет знак равенства как стандартное присвоение переменной.

Наверное, не намеренно путать, поскольку опытный Javascript-программист обычно распознает подчеркивание как переменную. Но если вы не знаете, что это определенно очень запутанно. Я, конечно, не писал бы так; Я не являюсь поклонником коротких бессмысленных имен переменных в лучшие моменты времени. Если вы хотите, чтобы короткие имена переменных в JS-коде сохранялись, используйте minifier; не начинайте писать с короткими переменными.

15
ответ дан SDC 19 August 2018 в 12:45
поделиться
  • 1
    +1, так как вы здесь, чтобы явно указать, что _ является переменной. – TRiG 28 February 2013 в 15:53
  • 2
    @TRiG, ​​как насчет ответа Starx, который делает это, не будучи tl; dr? – Mathletics 28 February 2013 в 15:54

Это не оператор присваивания.

  • _ - это просто параметр, переданный функции.
    hexbin.radius = function(_) {
                    //       ^ It is passed here
        // ...
    };
    
  • На следующей строке r = +_; + infront переводит эту переменную (_) в числовое или целочисленное значение и присваивает ее переменной r

НЕ УСТАНАВЛИВАЙТЕСЬ с оператором +=

96
ответ дан Starx 19 August 2018 в 12:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: