只要你理解了该章节的3个要点,就能轻松解答以下习题了。 局部变量的优先级高于同名的全局变量。 函数可以记忆它被创建时候的环境,可以读取上层函数内部的变量。 this 指代的是调用函数的那个对象,如无指代的对象,则为全局对象。 // 挑战一 function func1() { function func2() { console.log(this) } re
关卡解答 var EventUtil = { /** * 添加事件处理程序 * @param {Element} element - 要操作的元素 * @param {String} type - 事件名称 * @param {Function} handler - 事件处理程序函数 */ addHandler: function
关卡详解 仔细想想,下面代码块会输出什么结果呢?前3个挑战相比前一章节,代码仅仅是多了换行,结果会有什么不一样呢? <!-- 挑战一 --> <body> <div id = "t"> <span>aaa</span> <span>bbb</span> <span>ccc</span> </div> </body> <script> var d = documen
关卡详解 仔细想想,下面代码块会输出什么结果呢? <!-- 挑战一 --> <body> <div id = "t"><span>aaa</span><span>bbb</span><span>ccc</span></div> </body> <script> var d = document.getElementById("t"); document.writeln(d.f
关卡详解 要点:JavaScript 是一个单线程序的解释器,因此一定时间内只能执行一段代码。为了控制要执行的代码,就有一个 JavaScript 任务队列。这些任务会按照将它们添加到队列的顺序执行。setTimeout() 的第二个参数告诉 JavaScript 再过多长时间把当前任务添加到队列中。如果队列是空的,那么添加的代码会立即执行;如果队列不是空的,那么它就要等前面的代码执行完了以后再执
// 如何高效产生m个n范围内的不重复随机数(m<n) var getRandomNumber = function(n, m){ if(typeof n !== 'number' || typeof m !== 'number'){ throw Error('m和n必须是数字!'); } if(m >= n){ throw Error(
// 挑战一 var falseObject = new Object(false); console.log(typeof falseObject); // object console.log(falseObject instanceof Object); // true console.log(falseObject instanceof Boolean); //
按要求完成下列常用的正则表达式。 // 挑战一:数字 var pattern1 = /^[0-9]*$/; console.log(pattern1.test('123')); // true console.log(pattern1.test('abc')); // false // 挑战二:3位的数字 var pattern2 = /^\d{3}$/; console.log(pattern
// 挑战一,合并任意个数的字符串 var concat = function(){ var result = ''; for(var i = 0; i < arguments.length; i ++){ result += arguments[i]; } return result; } console.log(concat('st','on',
// 挑战一(一维数组) var arr = [2,3,4,2,3,5,6,4,3,2]; var unique = function(arr) { var result = []; arr.forEach(function(item){ if(result.indexOf(item) < 0){ result.push(item);
请实现下面用来枚举属性的对象工具函数: /* * 把 p 中的可枚举属性复制到 o 中,并返回 o * 如果 o 和 p 中含有同名属性,则覆盖 o 中的属性 */ function extend(o, p) { for (prop in p) { // 遍历 p 中的所有属性 o[prop] = p[prop]; // 将属性添加至 o
// 挑战一 var k; for(i=0, j=0; i<10, j<6; i++, j++){ k = i + j; } console.log(k); // 10 // 挑战二 var nums = [12,32,54,56,78,89]; for(var n in nums){ console.log(n); // 0,1,2,3,4,5 } // 挑战三 func
// 挑战一 var x=1; if(!!function f(){}){ x+=typeof f; } console.log(x); // "1undefined" // 挑战二 (function f(f){ console.log(typeof f()); // "number" })(function(){return 1;}); // 挑战三 cons
// 挑战一 console.log(typeof "undefined"); // "string" console.log(typeof null); // "object" // 挑战二 var message = "some string"; console.log(typeof massage); // "undefined" message = 10000;
请判断以下代码是否有效?如果有效请给出结果,如果无效请说明原因。 // 挑战一 var class = 'person'; console.log(class); // 无效,因为 class 是关键字。 // 挑战二 var Class = 'person'; console.log(class); // 无效,虽然 Class 是合法的标识符,但是输出的是 class。 /