发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
第一题
(
function
(){
return
typeof
arguments;
})();
//问自动执行函数会返回什么值
// 就是考Arguments对象的typeof
// 看平时用firebug多不多了……
第二题
var
f =
g(){
23; };
g();
//问最后一行的执行结果
//根据标准,命名函数表达式的函数名只对函数体内可见
//因此报错
第三题
(x){
delete
x;
})(1);
// 参数不可删除
//1
第四题
y = 1, x = y =
//声明两个变量x与y,y最初赋为1,x没有赋值,默认赋给window的一个属性undefined,
//因此typeof undefined为"undefined",最后x= y= "undefined"
第五题
f(f){
f();
})(
1; });
//函数名被优先级更高的参数名覆盖了 --->
// (function (f){
// return typeof f();
// })(function(){ return 1; });
//typeof 1 ---> "number"
第六题
foo = {
bar:
() {
this
.baz; },
baz: 1
};
arguments[0]();
})(foo.bar);
//我们把下面那个自动执行函数分解一下
//var a = function(){
// return typeof arguments[0]();
//};
//a(foo.bar)
//执行完arguments[0](),即得到this.baz
//由于this变量在此绑定失效,它指向window,window有bax变量吗?
//没有,返回"undefined"
第七题
}
(f = foo.bar)();
//我们把最后一行分解一下
//window.f
//f= foo.bar
// f()
// typeof f()
//返回"undefined"
第八题
f = (
f(){
"1"
; },
2; })();
f;
//首先要理解分组选择符,最后a会赋给什么呢?
// var a = (1,2,3);
// alert(a) ---> 3
//那么这就简单了,f = function(){return 2};
//typeof f() ---> number
第九题
x = 1;
if
f(){}) {
x +=
//问x的值
//函数声明只能裸露于全局作用域下或位于函数体中。
//从句法上讲,它们不能出现在块中,例如不能出现在
// if、while 或 for 语句中。因为块只能包含语句,
//因此if()中的f函数不能当做函数声明,当成表达式使用
//可能在预编译阶段做了如下处理
//if((XXX = function(){}))
//因此我们是找不到f的
// 1undefined
第十题
x = [
x,
y][1];
//数组其实就是这个样子["undefined","undefined"]
//"string"
第十一题
(foo){
foo.bar;
})({ foo: { bar: 1 } });
//分解一下
// var bb = { foo: { bar: 1 } }
// (function(j){
// return typeof j.bar
// })(bb)
// "undefined"
//注意那个对象只有foo属性,没有bar属性
第十二题
1; }
2; }
//函数声明会在预编译阶段被提前
//2
第十三题
f; }
new
f()
instanceof
//问这一行的值
//由于函数f会返回自身,这个new 就形同虚设
//如果f的形式为 function f(){return this}或function f(){}就不一样
//false
第十四题
with
(x, undefined){}) length;
//问length的值为多少
//with就是一个读写器,题意是取出函数的length属性
//而函数的length就是指它形参的长度
来自: 复杂网络621 > 《javascript》
0条评论
发表
请遵守用户 评论公约
14 个折磨人的 JavaScript 面试题
问题四var y = 1, x = y = typeof x; x;//''undefined'' 我们试图分解上述代码成下面两步:var y = 1; //step 1var x =...
JavaScript分享ES6相关知识
let 变量名=变量值。2、用let定义变量不允许在[size=0.9em]同一个作用域中重复声明一个变量(只要当前作用域中有这个变量,不管是用var还是用let声明的,再用let声明的话会报错:不能重复声明一个变量)...
深入详解javascript之delete操作符
Js代码 /* 全局环境下,this所指向的就是这个全局对象 */ var GLOBAL_OBJECT = this; var foo = 1; GLOBAL_OBJECT.foo; // 1 foo === GLOBAL_OBJECT.foo; // true function bar(){} typ...
每个前端开发者必会的 20 个 JavaScript 面试题 – 码农网
函数是一等公民函数可以有属性,并且能连接到它的构造方法函数可以像一个变量一样存在内存中函数可以当做参数传给其他函数函数可以返回其他函数问题6:JavaScript怎么清空数组?console.log(foo)console...
Javascript中的delete
当声明的变量和函数成为一个变量对象的属性时--要么是激活对象(Function code),要么是全局对象(Global code),这些创建的属性带有DontDelete 特性。// 42, 构造函数中定义的o.xdelete o.x; //tr...
后端程序员的 JavaScript 之旅
通过 typeof Object 操作可以知道 Object 是一个函数。注: var toString = Object.prototype.toString var Foo = function() {}基于原...
理解Javascript之执行上下文(Execution Context)
executionContextObj = { variableObject: { /* 函数中的arguments对象, 参数, 内部的变量以及函数声明 */ }, scopeChain: { /* variableObject 以及所有父执行上下文中的variableObject */ }, t...
44 个 JavaScript 变态题解析 – 码农网
44 个 JavaScript 变态题解析 – 码农网。type resultUndefined "undefined"Null "object"Boolean "boolean"Number "number"String "string"Symbol...
Ramda 函数库参考教程
一、比较运算 二、数学运算 三、逻辑运算 四、字符串 五、函数 - 5.1 函数的合成 - 5.2 柯里化 - 5.3 函数的执行 六、数组 - 6.1 数组的...
微信扫码,在手机上查看选中内容