JS中!函数是什么作用

在看别人解释return的用法时有这么一个例子:vari=1;//定义循环变量functionfunc1(){i++;//改变循环变量if(i<5){//小括号为循环条件... 在看别人解释return的用法时有这么一个例子:
var i = 1; //定义循环变量
function func1() {
i++; //改变循环变量
if (i < 5) { //小括号为循环条件
document.write(i + '<br>'); //这里是循环体
return func1();
}
}
!func1()();

我换成func1();结果一样输出2 3 4
我想的是!func1()();是调用函数后!给返回的值取反,那么不应该输出false false false吗
应该怎么理解这个 !func1()();呢
展开
 我来答
dagewxw
2019-05-30 · TA获得超过5929个赞
知道大有可为答主
回答量:3523
采纳率:67%
帮助的人:987万
展开全部
函数调用的优先级高于其他操作符。
所以!得等到最后执行。但其实根本执行不到,因为这段代码就是错的。后面的第二个(),也就是第二次调用,会出现typeerror。
问题出在 return func1(); 这个return 之前,先进行函数调用,不断递归,输出2,3,4. 一直到i=5。
但是等i=5的时候跳过了return。其实什么都没返回。
所以没有返回函数而使用()进行函数调用,应该出错,什么真真假假都是扯。
l7722526
2019-05-30 · TA获得超过2.7万个赞
知道大有可为答主
回答量:2.8万
采纳率:84%
帮助的人:3834万
展开全部
JavaScript中没有Trim函数,VBScript语言中才有这个函数,就是去掉字符串头和尾的空格。可以在JavaScript中这么写一个:

<script language="JavaScript">
//此处为string类添加三个成员
String.prototype.Trim = function(){ return Trim(this);}
String.prototype.LTrim = function(){return LTrim(this);}
String.prototype.RTrim = function(){return RTrim(this);}

//此处为独立函数
function LTrim(str)
{
var i;
for(i=0;i<str.length;i++)
{
if(str.charAt(i)!=" "&&str.charAt(i)!=" ")break;
}
str=str.substring(i,str.length);
return str;
}
function RTrim(str)
{
var i;
for(i=str.length-1;i>=0;i--)
{
if(str.charAt(i)!=" "&&str.charAt(i)!=" ")break;
}
str=str.substring(0,i+1);
return str;
}
function Trim(str)
{
return LTrim(RTrim(str));
}
</script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-05-30
展开全部
输出的数字不是返回值啊。而是i的数值,所以是2,3,4
而返回值是func1(),这个函数你没有设定返回值,所以返回的应该是undefinded,!undefinded等于ture。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
欲乜爰2481
2019-05-30 · TA获得超过3312个赞
知道大有可为答主
回答量:6146
采纳率:84%
帮助的人:290万
展开全部


function字段用于定义一个函数,javascript定义函数有两种方式,分别如下。

var func = function(test) {
    alert(test);
}
function func2(test) {
    alert(test);
}



追问
我问的不是这个。。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式