Преимущества объявления типа переменной через присваивание в JavaScript - PullRequest
4 голосов
/ 08 марта 2012

Есть ли в JavaScript какое-либо преимущество при назначении временного значения для вновь объявленной переменной? Например ...

var a = 0,
    b = '';

// Somewhere else
a = 5;
b = 'Goodbye';

против

var a, b;

// Somewhere else    
a = 5;
b = 'Goodbye';

Мне известно, что при назначении переменной в объявлении будет установлен ее тип. Но в JavaScript это можно легко изменить, присвоив значение другого типа, так что на самом деле это никак не защищает.

Каковы преимущества / недостатки вышеуказанного?

Ответы [ 5 ]

4 голосов
/ 08 марта 2012

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

Недостатком является больше строк кода и размера файла.

2 голосов
/ 08 марта 2012

Преимущества объявления типа переменной в JavaScript

Вы не можете этого сделать, поэтому нет.

есть ли какое-либо преимущество в назначениивременное значение для вновь объявленной переменной?

Преимущества:

  • Позже можно избежать возникновения ошибок, если вы не установите его

Недостатки:

  • Тратить время / код / ​​пропускную способность, назначая переменную, которую вы никогда не будете использовать
  • В тестировании не будет отображаться состояние ошибки, если вы не установите его позже
1 голос
/ 08 марта 2012

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

Теперь, когда вы объявляете литералы объекта, это может избавить вас от хлопот, связанных с предварительным объявлением всех свойств.

Например

myObject.with.way.too.much.hierarchy

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

Так что у вас будет что-то непристойное, подобное этому:

if(myObject && myObject.with && myObject.with.way ...//ew

Примечание: лично я склонен объявлять все свои переменные заранее, но скорее как самодокументирующую вещь.

0 голосов
/ 08 марта 2012

код может затормозить или вы можете получить неожиданный результат при использовании неопределенной переменной.

установка значения для переменной поможет вам, когда вы используете его случайно, не проверяя, имеет ли оно известное значение илитип

0 голосов
/ 08 марта 2012
You have to set an initial value if you will be using any methods on the thing-
var s='',A=[];

for(var i=0;i<5;i++){
s+=i;
A.push(i);
}

В противном случае, кроме как минималистский вид документации, это не нужно.

...