Можно создать недостающий объект при помощи substitute()
без аргумента.
В Вашем случае мы могли сделать round1
недостающий объект в else
пункт:
foo = function(a, round0) {
a = a * pi
if(!missing(round0)) round(a)
else a
}
bar = function(b) {
if(b > 10) round1=T else round1 <- substitute()
foo(b, round1)
}
bar(9)
#> [1] 28.27433
, Созданный 24.10.2019 reprex пакет (v0.3.0) глоток>
Лучший способ - использовать существующий плагин, как предлагает TJB.
Что касается вашего вопроса о самом коде, лучше написать его так:
var pass = "f00Bar!";
var strength = 1;
var arr = [/.{5,}/, /[a-z]+/, /[0-9]+/, /[A-Z]+/];
jQuery.map(arr, function(regexp) {
if(pass.match(regexp))
strength++;
});
(Изменено для исправления синтаксических ошибок.)
Вы можете попробовать плагины jQuery для проверки надежности пароля
Некоторые из них
В дополнение к ответу gs вы должны проверить пароль по общим словарным словам (возможно, используя хеш). В противном случае слабый пароль, такой как «Yellow1», будет оценен вашей логикой как надежный.
Я бы посоветовал оценить существующий плагин надежности пароля jQuery. (если вы не делаете это просто в качестве упражнения)
Вот несколько ссылок, которые я нашел:
http://www.visual-blast.com/javascript/password-strength-checker/
http: / /phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/
Если вы выполняете упражнение
Ссылка: Индикатор надежности пароля
Используемый код jQuery (# обозначает изменения по сравнению с кодом Бенджамина) code)
$.fn.passwordStrength = function( options ){
return this.each(function(){
var that = this;that.opts = {};
that.opts = $.extend({}, $.fn.passwordStrength.defaults, options);
that.div = $(that.opts.targetDiv);
that.defaultClass = that.div.attr('class');
that.percents = (that.opts.classes.length) ? 100 / that.opts.classes.length : 100;
v = $(this)
.keyup(function(){
if( typeof el == "undefined" )
this.el = $(this);
var s = getPasswordStrength (this.value);
var p = this.percents;
var t = Math.floor( s / p );
if( 100 <= s )
t = this.opts.classes.length - 1;
this.div
.removeAttr('class')
.addClass( this.defaultClass )
.addClass( this.opts.classes[ t ] );
})
# Removed generate password button creation
});
function getPasswordStrength(H){
var D=(H.length);
# Added below to make all passwords less than 4 characters show as weak
if (D<4) { D=0 }
if(D>5){
D=5
}
var F=H.replace(/[0-9]/g,"");
var G=(H.length-F.length);
if(G>3){G=3}
var A=H.replace(/\W/g,"");
var C=(H.length-A.length);
if(C>3){C=3}
var B=H.replace(/[A-Z]/g,"");
var I=(H.length-B.length);
if(I>3){I=3}
var E=((D*10)-20)+(G*10)+(C*15)+(I*10);
if(E<0){E=0}
if(E>100){E=100}
return E
}
# Removed generate password function
};
$(document)
.ready(function(){
$('input[name="password2"]').passwordStrength({targetDiv: '#iSM',classes : Array('weak','medium','strong')});
});