- 浏览: 536293 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (119)
- java总结 (43)
- Spring (2)
- 反编译工具 (1)
- hibernate (1)
- Tomcat (1)
- WebLogic (2)
- 随笔 (4)
- Word问题小记 (2)
- web前端 (26)
- Oracle (10)
- DOS (1)
- 面试笔试 (3)
- Servlet (1)
- jQuery (1)
- Linux/Unix (2)
- JSTL (1)
- struts2 (2)
- JSON (2)
- Velocity (0)
- 生活 (3)
- MyEclipse使用小结 (1)
- 操作系统 (2)
- jqgrid (1)
- ajax-dwr (1)
- javascript (18)
- dreamweaver (2)
- html (10)
- css (5)
- 正则表达式 (1)
- IO (3)
最新评论
-
a363722188:
幽默者 写道老兄,Collections.copy(dest1 ...
由java中深度复制一伸出Collections.copy的使用 -
幽默者:
老兄,Collections.copy(dest1, src1 ...
由java中深度复制一伸出Collections.copy的使用 -
raymao:
java 中 split 是正则表达式
java 和 javascript split 的区别! -
413899327:
面试前端javascript
阿里电话面试 -
yzsunlight:
你面试前台UI?
阿里电话面试
javascript中一些数据类型以及奇怪的特性。具体情况直接运行就知道了!
输出结果:
时间戳: 2013-6-7 15:47:07
错误: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
多谢提醒!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Data Types And Definitions</title> <style type="text/css"></style> <script type="text/javascript"> /* */ function factorial(x) { if (x < 0) throw new Error("factorial: x must be >= 0"); if (x <= 1) { return 1; } else { return x * factorial(x-1); } } //factorial(-2); var fa = factorial(2); console.log(" fa = " + fa ); var factorial = function(x) { if (x < 2) { return 1; } else { return x * arguments.callee(x-1); } } var y = factorial(5); // Returns 120 console.log(" y = " + y ); function myFunc(arg1,arg2){ console.log(" myFunc.length = " + myFunc.length); console.log(" arguments.length = " + arguments.length); console.log(" arguments.callee.length = " + arguments.callee.length); } myFunc(); console.log(" myFunc.length = " + myFunc.length);//显示函数形参的个数 结果为2 var isArray = function(obj) { return Object.prototype.toString.apply(obj) === '[object Array]'; } function myfunc2(){ var s=""; //arguments.callee指的就是函数自己 注意 callee是 arguments的属性,不是函数的的 console.log(" isArray(arguments) = " + isArray(arguments) ); // false console.log(" apply(arguments) = " + Object.prototype.toString.apply(arguments) ); // [object Arguments] console.log(" typeof arguments = " + arguments); // [object Arguments] console.log(" arguments.callee = " + arguments.callee); console.log(" typeof arguments.callee = " + typeof arguments.callee);//function var len=arguments.length; for (var i=0;i<len;i++){ s+=arguments[i];//此处要注意 arguments并非真正的数组,如果需要变为数组,下面有方式方法。 var args=Array.prototype.slice.call(arguments);//将arguments转变成真正的数组,并赋予args } console.log(s + " args = " + args); } myfunc2(4,4,"s","444"); var obj = new Object(); function a(){} console.log(typeof (typeof a)); //alerts 'string' console.log(" typeof a = " + typeof a); //alerts 'function' console.log(" typeof obj = " + typeof obj); //alerts 'object' console.log(" typeof null = " + typeof null); //alerts 'object' console.log(" typeof false = " + typeof false); //alerts 'object' console.log(" typeof new Array() = " + typeof new Array()); //alerts 'object' console.log(" new Array() = " + (new Array()) ); //alerts 空白 console.log(" []= " + ( [] ) ); //alerts 空白 console.log(" null instanceof Object = " + null instanceof Object); //evaluates false(null instanceof Object); //evaluates false console.log(" false instanceof Boolean = " + false instanceof Boolean); // false console.log(" new Array() == false => " + (new Array() == false) ); //evaluates true console.log(" [] == false => " + ([] == false) ); //evaluates true var emptyArray = []; //empty array console.log(" emptyArray == false => " + ( emptyArray == false) ); //evaluates true if (emptyArray) { console.log(" if(emptyArray) ==> true "); //ture } else { console.log(" if(emptyArray) ==> false "); } var zero = 0; console.log(" 0 == false => " + ( zero == false) ); //evaluates true – zero is a falsy console.log(" 0 === false => " + ( zero === false) ); //evaluates false – zero is a number, not a boolean var someVar = 'hello'; setTimeout(function() { alert(someVar); }, 1000);//out put goodbye var someVar = 'goodbye'; var someVar = 'hello'; setTimeout((function(someVar) { return function() { alert(someVar); }//out put hello 参数早就传进去了 })(someVar), 1000); someVar = 'goodbye'; //http://coding.smashingmagazine.com/2011/05/30/10-oddities-and-secrets-about-javascript/ </script> </head> <body> </body> </html>
输出结果:
评论
2 楼
413899327
2013-06-07
rambolovepanda 写道
代码在 严格模式下 callee不管用的
时间戳: 2013-6-7 15:47:07
错误: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
多谢提醒!
1 楼
rambolovepanda
2013-06-07
代码在 严格模式下 callee不管用的
发表评论
-
java 和 javascript split 的区别!
2013-09-18 10:52 1646java 和 javascript split 的区别! ... -
javascrip如何创建命名空间
2013-09-18 10:49 1200看代码,废话不多说! <!DOCTYPE ht ... -
阿里电话面试
2013-09-10 22:16 2507今天晚上接到阿里电话面试! 问到的问题大 ... -
setTimeout 和 setInterval最小执行时间问题
2013-09-08 22:43 16757setTimeout 和 setInterval 经常被用 ... -
IE6用setAttribute添加事件无效
2013-09-08 11:51 1429<!DOCTYPE html PUBLIC &q ... -
在IE6下 a标签添加行间onclick事件导致页面跳转失败原因分析
2013-09-08 11:43 3394<!DOCTYPE html PUBLIC & ... -
如何禁用浏览器的后退/刷新,backspace退格键
2013-06-09 13:01 7551在这个页面中加入的JavaScript代码可 用来产生点击前 ... -
javascript阻止事件冒泡和浏览器的默认行为
2013-06-09 09:41 2231在使用javascript编程时会遇到一个问题,就是当你给 ... -
JavaScript中两个等于号和三个等于号之间的区别
2013-06-07 14:59 1810为真的: 0 == 0 、"" == ... -
javascript中为5种为假的情况测试
2013-05-24 15:42 1276Javascript假的5种情况: Falsy values ... -
javascript中变量声明提升(Hoisting)的理解 ---What is hoisting in Javascript?
2013-05-24 11:24 1400<!DOCTYPE html PUBLIC &quo ... -
JavaScript中两个等于号和三个等于号之间的区别
2013-05-12 22:41 1191<!DOCTYPE html PUBLIC " ... -
javascript的函数参数arguments 并不是数组
2013-03-22 12:34 1490arguments 并不是数组,只是碰巧用数字做索引,以及一个 ... -
弹出层居中问题版1
2013-03-21 22:51 17791、居中弹出层css控制问题版 <!DOCTYPE ... -
javascript中字符串格式json如何转化成json对象
2013-02-13 16:34 12159什么是JSON JSON(JavaScript Object ... -
javascript 内存和性能闲聊
2013-01-14 22:25 1182我想问你这样更省内存,所有的aBtn[i].onclick共用 ... -
javascript 定时器 实现时间自动更新的特效
2012-12-19 14:15 2195图片自己找几个替换下就OK了! <!DOCTYPE ...
相关推荐
2. 函数作为一等公民:在JavaScript中,函数是一种特殊的数据类型,可以作为变量赋值、作为参数传递、也可以作为返回值。 3. 基于原型的对象:JavaScript的对象继承是通过原型链来实现的,每个对象都有一个proto...
基于“JavaScript”这个标签,我们可以推断出这个压缩包的内容将围绕JavaScript语言的相关知识展开,包括但不限于变量、数据类型、控制流、函数、对象、数组、原型链、闭包、异步编程(回调、Promise、async/await)...
`typeof`运算符作为基本工具之一,可以帮助开发者快速识别变量的数据类型。本文将深入探讨`typeof`运算符的功能、应用场景以及其局限性,并提供实用的解决方案。 #### 二、`typeof`运算符基础 `typeof`是一个一元...
在JavaScript中,变量的相互引用主要涉及到值的存储方式以及数据类型的特点。JavaScript有两大类基本数据类型(原始类型):原始值(如字符串、数字、布尔值等)和引用值(如对象、数组、函数)。原始类型是按值存储...
它可能引入了一些新的语法特性,比如更灵活的类型系统,或者是一种全新的面向领域特定的编程模型。这样的设计可能旨在提高代码的可读性,降低复杂性,或者鼓励开发者以不同的角度解决问题。 在"field-js-master"这...
- **变量与数据类型**:JavaScript支持var、let和const声明变量,数据类型包括基本类型(如字符串、数字、布尔值)和引用类型(如对象、数组、函数)。 - **控制结构**:包括条件语句(if...else)、循环(for、...
这个问题通常涉及到数据加载顺序、异步操作以及数据类型匹配等多个方面。 首先,让我们分析这个问题的背景。在描述中提到,开发者遇到了一个奇怪的现象:`select`下拉框的`v-model`不能正常工作,即不能根据预设的...
仅仅通过反射方法没有办法知道集合元素中的类型,所以上面的两个converter能将任何集合转换成相对javascript而言有意义的对象.然而没有办法将不同的集合类类型分别采用不同的转换方法.因为没有办法完全自动进行转换,...
TypeScript是JavaScript的一个超集,它提供了静态类型检查、接口、类和泛型等高级特性,这些都极大地提高了代码的可读性、可维护性和减少了运行时错误。在Autoboop中,TypeScript的使用确保了代码的稳定性和健壮性,...