Какой смысл оператора void в JavaScript?

Использование:

counter = df[column_names].isnull().all(axis=1).sum()
print (counter)

Пример :

df = pd.DataFrame({
         'A':list('abcdef'),
         'Uniprot_acc':[np.nan,5,4,5,np.nan,4],
         'Uniprot_id':[np.nan,8,9,4,np.nan,np.nan],
         'Interpro_domain':[np.nan,3,np.nan,7,np.nan,0],
         'E':[5,3,np.nan,9,np.nan,4],

})

column_names = ['Uniprot_acc',
                'Uniprot_id',
                'Interpro_domain']

print (df)
   A  Uniprot_acc  Uniprot_id  Interpro_domain    E
0  a          NaN         NaN              NaN  5.0
1  b          5.0         8.0              3.0  3.0
2  c          4.0         9.0              NaN  NaN
3  d          5.0         4.0              7.0  9.0
4  e          NaN         NaN              NaN  NaN
5  f          4.0         NaN              0.0  4.0

counter = df[column_names].isnull().all(axis=1).sum()
print (counter)
2

Объяснение :

Первый фильтр столбцов по списку :

print (df[column_names])
   Uniprot_acc  Uniprot_id  Interpro_domain
0          NaN         NaN              NaN
1          5.0         8.0              3.0
2          4.0         9.0              NaN
3          5.0         4.0              7.0
4          NaN         NaN              NaN
5          4.0         NaN              0.0

Затем проверьте пропущенные значения None и NaN с:

print (df[column_names].isnull())
   Uniprot_acc  Uniprot_id  Interpro_domain
0         True        True             True
1        False       False            False
2        False       False             True
3        False       False            False
4         True        True             True
5        False        True            False

Проверьте, все ли истинные значения в строках по DataFrame.all : [ 1116]

print (df[column_names].isnull().all(axis=1))
0     True
1    False
2    False
3    False
4     True
5    False
dtype: bool

И последний счет только True с sum.

54
задан Michał Perłakowski 2 January 2016 в 07:45
поделиться

3 ответа

Оператор void JavaScript используется только для явного возврата неопределенный. Это - унарный оператор, означая, что только один операнд может использоваться с ним. Можно использовать его как показанный below —  standalone или с круглой скобкой.

void expression;
void(expression);

Позволяет, видят некоторые примеры

void 0; //returns undefined
void(1); //returns undefined

void 'hello'; //undefined
void {}; //undefined
void []; //undefined

void myFunction(); 
void(myFunction());

, Если Вы спрашиваете меня, почему Вам нужно специальное ключевое слово только для возврата неопределенный вместо того, чтобы просто возвратиться неопределенный. Ну, причина перед ES5 Вы могли на самом деле присвоить новое значение оригиналу, неопределенному как так var, неопределенный = "привет" или var, неопределенный = 23, и большинство браузеров будет поддерживать его. Чтобы возвратить неопределенный оригинал и только быть дважды уверенным, что оператор void используется. Не очень популярный оператор, хотя и редко используется.

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

//just a normal function
function test() {
  console.log('hello');
  return 2;
}

//lets call it
test(); //output is hello followed by 2

//now lets try with void
void test(); //output is hello followed by undefined

пустые отмены возврат из функции, и явно возвращается неопределенный

, можно читать больше из моего учебного сообщения: https://josephkhan.me/the-javascript-void-operator /

1
ответ дан 7 November 2019 в 08:03
поделиться

Объяснение его использования в ссылках :

Это - причина, что bookmarklets часто обертывают код в пустоте () или анонимная функция, которая не возвращает ничего, чтобы мешать браузеру пытаться отобразить результат выполнения bookmarklet. Например:

javascript:void(window.open("dom_spy.html"))

, Если Вы непосредственно используете код, который возвращает что-то (новый экземпляр окна в этом случае), браузер закончит тем, что отобразил это:

javascript:window.open("dom_spy.html");

В вышеупомянутом Firefox отобразится:

[object Window]
53
ответ дан Grant Gryczan 7 November 2019 в 08:03
поделиться

Рассмотрите следующее:

<a href="javascript:void(fish=document.getElementById('foo').value);void(document.getElementById('bar').value=fish);">With Void</a>

<a href="javascript:fish=document.getElementById('foo').value;document.getElementById('bar').value=fish;">Without Void</a>

<input type="text" id="foo" value="one fish" />
<input type="text" id="bar" value="no fish" />

первая ссылка подкачает значения текстовых полей. Вторая ссылка откроет новую страницу с текстом "одна рыба". Если Вы будете использовать javascript: link, минута, выражение возвращает что-то другое, чем null или undefined, то браузер интерпретирует это как, что должна сделать ссылка. Путем обертывания всего expressions/statments в void() функция, Вы удостоверяетесь, что Ваш весь отрывок кода будет работать. В эти дни это, прежде всего, имеет применение в Bookmarklets как использование onclick атрибут, или обработчики событий установки в отдельных блоках/файлах JavaScript являются "нормой".

Что касается javascript: по сравнению с javascript:void(), первый оператор неоднозначен. Вы говорите, "эй, я хочу запустить некоторый JavaScript", но тогда Вы не предоставляете кода. Не обязательно ясно, что браузер должен сделать здесь. Со вторым оператором Вы говорите "эй, запустите некоторый JavaScript", и Ваш код в конечном счете возвращается неопределенный, который знает браузер, означает, "ничего не делают".

, Так как я здесь, я также укажу, что использование или javascript: или javascript:void(); впало в немилость с большинством людей, которые заботятся о разметке. Лучшая вещь сделать, имеют Ваш onclick обработчик, возвращают false и указали на ссылку к странице/ресурсу, которая имеет смысл для людей, которым выключили JavaScript или используют блокировщик JavaScript, такой как NoScript.

12
ответ дан Alan Storm 7 November 2019 в 08:03
поделиться
Другие вопросы по тегам:

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