导航:首页 > 编程语言 > javascriptcallee

javascriptcallee

发布时间:2023-08-30 19:27:20

A. 一段文字,每个字有不同的颜色javascript函数代码怎么写

/* 随机获取颜色 */
function getColor()
{
return (
function(m,s,c)
{
return (c>0 ? arguments.callee(m,s,c-1): '#') + s[m.floor(m.random() * 16)]
}
)(Math, ['1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f'], 5);
}

var _str = "每个字的颜色都不一样?sdna,sjdansdnasdlhasdnas,dmas,das,'jqlwjkqlwjqlwjewq;alsdfjafa,as da,sdn alsd hasldhalsd halsdk asldkjasld alskd alsdkj alsdk alsdk alskd jalasdklj alkd asl;d jasldj asldk jaklsdj als;kdj as.";

var arr = _str.split("");
var str = "";
for(var i=0,len=arr.length; i<len; i++)
{
str += '<span style="color:'+getColor()+';">'+arr[i]+"</span>";
}

B. js中变量后面有个问号是什么意思

这个是三元操作符,它在每一种语言中的功能和语法都是一样的专。

举例:int a=3;int b=5;

int c= a>b?1:0;

解释:a大于属的话,c就等于1,否则的话c等于0;

?是判断的意思,: 是否则的意思。

(2)javascriptcallee扩展阅读:

三元操作符格式

如名字表示的三元运算符需要三个操作数。

语法为:条件表达式?表达式1:表达式2。

说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。

其逻辑为:“如果条件表达式成立或者满足则执行表达式1,否则执行第二个。”常用在设置默认值,例如某个值不一定存在,则判断这个值是否存在,不存在给默认值(表达式2)。

C. js严格模式为什么要禁用callee

早起版本的 JavaScript 没有具名函数表达式(named function expression),所以在函数表达式里么没有办法实现递归。

比如下面实现阶乘的函数:

functionfactorial(n){
return!(n>1)?1:factorial(n-1)*n;}[1,2,3,4,5].map(factorial);


如果写成函数表达式的话:


[1,2,3,4,5].map(function(n){
//这里要怎样递归?
});


所以添加了 arguments.callee 来实现对执行函数本身的调用:


[1,2,3,4,5].map(function(n){
return!(n>1)?1:arguments.callee(n-1)*n;
});

但是现在的JavaScript 支持了具名函数表达式:


[1,2,3,4,5].map(functionfactorial(n){
return!(n>1)?1:factorial(n-1)*n;
});


这样写有以下的好处:


同时,使用 arguments.callee 还会带来函数引用优化问题和尾递归优化的问题。


以上部分内容资料来自:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode

http://stackoverflow.com/questions/103598/why-was-the-arguments-callee-caller-property-deprecated-in-javascript

D. 关于JavaScript中argument.caller的理解问题!谢谢!

首先要分清caller和callee,arguments.callee返回当前正在执行的函数,function.caller返回函数的调用体所在函数。

随便弄了个示例代码

functionparentCheck(){
check("");
functioncheck(){
subCheck();
functionsubCheck(){
console.log(arguments.callee);
console.log(subCheck.caller.caller)
}
}
}
parentCheck();

arguments.callee返回subCheck的函数体,subCheck.caller返回调用subCheck的函数,即check,而再往上一层,subCheck.caller.caller就是返回调用check的函数体,也就是parentCheck。那如果是继续往上一层呢?subCheck.caller.caller.caller?就会变成null。书里也有讲,arguments.caller在非严格模式下永远是undefined。我们就可以判断值是null还是undefined来区分arguments.caller和函数的caller。

JS的函数是可以无限嵌套的,就构成了一棵树,而function.caller就提供了一个访问父节点的方法,通过灵活应用function.caller,我们甚至可以用脚本画出整棵树,只要我们在任意地方成功插入一段JS代码,又或者是,像网站统计之类的第三方代码,我们就能窥视其他代码。

所以为了安全期间,严格模式禁止调用caller、callee、arguments变量,在浏览器中的报错为

UncaughtTypeError:'caller','callee',and'arguments'rcallstothem

个人敝见,无书可循,希望对您有帮助

E. javascript中,用什么方法能够在本函数内部获取到自己的函数名

arguments.callee 为指向自己的函数,可想相面这样实现递归的软编码,楼上说的ie不支专持是ie不支持函数的name属性

functionrecursion(){
auruments.callee();
}

但是在ES5严格属模式中这种方式不再被支持

F. javascript关于arguments.callee

arguments.length 是实参长度

arguments.callee.length 是形参长度

这里有个简单的例子,是比较参数的版长权度的:
function test(x,y,z)
{
checkArgu(arguments);
return x+y+z;
}

function checkArgu(argu)
{
var argu_test1, argu_test2;
argu_test1 = argu.length;
argu_test2 = argu.callee.length;
if(argu_test1 == argu_test2)
alert("yes");
else
alert("no");
}

test(1,2,3);
test(1,2,3,4);

阅读全文

与javascriptcallee相关的资料

热点内容
vc修改文件名 浏览:149
linux65从域 浏览:321
用什么东西压缩文件 浏览:406
怎么删除ipad隐藏的APP 浏览:981
编程如何占用大量内存 浏览:116
多个excel表格文件如何组合 浏览:918
ubuntu内核升级命令 浏览:679
pgp文件夹 浏览:894
一键还原的文件是什么格式 浏览:581
女汉子微信名霸气十足 浏览:65
win10手机蓝屏修复 浏览:419
windows2008激活工具 浏览:259
g71的编程应注意什么 浏览:572
文件路径不符合是什么意思 浏览:543
qq如何换绑微信绑定 浏览:67
文件包下载的安装包在哪里 浏览:811
90版本升级不送 浏览:186
工具箱英文 浏览:382
南翔嘉定编程课哪里好 浏览:853
win10改变文件格式 浏览:475

友情链接