document.write()在调取函数时为什么把函数体的类型也返回??、
运行结果为什么会有[objectobject]document.write();为什么要把变量text(o)的类型给返回了????...
运行结果
为什么会有[object object]
document.write();为什么要把变量text(o)的类型给返回了???? 展开
为什么会有[object object]
document.write();为什么要把变量text(o)的类型给返回了???? 展开
展开全部
1、不管之前有没有声明,定义的时候函数的返回值类型都必须完整定义。比如你将来生一个小孩,他出生后浑身上下什么零件都必须长齐的。
2、前面声明,是为了使得编译器编译到调用这个函数的代码的时候,明白应该怎么匹配各个参数。就好比你孩子还没有到单位去工作,但必须有一张表格把你孩子的基本情况等等信息告知人家,人家才好提前考虑,将来当你孩子真正报到的时候,直接匹配已经安排好的工作即可。
重复声明就是声明两次以上喽。
我还是用C做例子来说吧,比如下面这种情况,就是重复声明了。
而如果函数体写了两次,就叫做重复定义了。
其实有的编译器并不认为函数声明两次是错误的,只要每次声明时的返回值、参数完全一致(C++里函数名相同而参数不同又是另一回事了,那种情况下实际上函数名不能算是相同的,因为C++在编译过程中会对函数名改名,改后的名字里同样保留了参数信息,所以只要参数不同,即使名字相同,也算是不同的函数。这个扯远了)
2、前面声明,是为了使得编译器编译到调用这个函数的代码的时候,明白应该怎么匹配各个参数。就好比你孩子还没有到单位去工作,但必须有一张表格把你孩子的基本情况等等信息告知人家,人家才好提前考虑,将来当你孩子真正报到的时候,直接匹配已经安排好的工作即可。
重复声明就是声明两次以上喽。
我还是用C做例子来说吧,比如下面这种情况,就是重复声明了。
而如果函数体写了两次,就叫做重复定义了。
其实有的编译器并不认为函数声明两次是错误的,只要每次声明时的返回值、参数完全一致(C++里函数名相同而参数不同又是另一回事了,那种情况下实际上函数名不能算是相同的,因为C++在编译过程中会对函数名改名,改后的名字里同样保留了参数信息,所以只要参数不同,即使名字相同,也算是不同的函数。这个扯远了)
追问
function t(a)
{
return a;
}
var a = 5;
document.write(t(a));
为什么这个不返回函数t(a)的类型呢
function t(a)
{
return a;
}
var a = 5;
document.write(t(a));
为什么这个不返回函数t(a)的类型呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询