js一些题目
console.log在不同的地方也会导致不同
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a);
2018年4月18日更新:
第一题:
var a=3
var b=function(){
alert(a)
var a = 4
alert(a)
}
b()
第二题:
var a=3
var b={
a:4,
getA:function(){
this.a=5
return function(){return this.a}
}
}
b.getA()()
第三题:
第二题中如何得5?
(答案在最下面)
再看一个类似的:看不太懂二者之间的区别 a和foo.bar.baz()
var x = 0;
var foo = {
x:1,
bar:{
x:2,
baz: function () {
console.log(this.x)
}
}
} var a = foo.bar.baz
foo.bar.baz() //
a() //
假期在家,看到的,昨天看了下;
原文链接:http://wwwcqamin.duapp.com/?p=102#comment-7
请说出下面程序的输出结果
第一题:
|
1
2
3
4
5
6
7
8
9
10
|
function funny(a) { console.log(a); var a = 10; arguments[0] = 20; return a; function a() { return 1; }}console.log(funny(8)); |
step1:
function funny(a) {
console.log("1: " + a);
var a = 10;
}
console.log(funny(8));
跟我想的恰恰相反……
step2:
func的arg,在func里面又被定义为变量,返回;在被定义为func会有哪些影响呢?
根据例子来看,return后function还是有效的
step3:
假如这样的话,又会如何呢?
function funny(a) {
console.log("1 : " + a);
var a = 10;
arguments[0] = 20;
return a;
function a() {
a = 100;
}
}
console.log(funny(8));
第二题:
|
1
2
3
4
5
6
7
8
|
function joke(s) { return s; s = 2; var s = function() { return s; }}console.log(joke("are you kinding?")); |
第三题:
|
1
2
3
4
5
6
7
8
|
function joke(s) { return s; s = 2; function s() { return s; }}console.log(joke("are you kinding?")); |
二三的差别就是一个是函数,一个是函数式的变量,但是为什么会产生这两种结果呢?
第四题:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
function s() { return 1;}var a = (function(s){ var s; return s; function s() { return 3; } s = 2;})();console.log(a); |
第五题:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function s() { return 1;}var a = (function(s){ return s; function s() { return 3; } s = function() { return 4; }; s = 5;})(function() {return 0;});console.log(a); |
step1:函数式和函数放在一起,先执行哪个呢?
function s() {
return 1;
}
var a = (function(s){
return s;
function s() {
return 3;
}
s = function() {
return 4;
};
s = 5;
})();
console.log(a);
step2:return在上面的时候,无论两个如何放置都先执行s()
return 在下面的时候,无论两个如何放置都先执行var s = func()
这是为什么呢?
var a = (function(){
return s;
s = function() {
return 4333;
};
function s() {
return 3;
}
})();
console.log(a);
var a = (function(){
s = function() {
return 4333;
};
function s() {
return 3;
}
return s;
})();
console.log(a);
第六题:
|
1
2
3
4
5
|
var i = 0;for(var j=0;j<10;j++) { i = i++;}console.log(i); |
第七题:
|
1
2
3
4
5
6
7
8
9
|
var a = {"x": 1};var b = a;a.x = 2;console.log(b.x);a = {"x":3};console.log(b.x);a.x = 4;console.log(b.x); |
第八题:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function haha() { return true;}function hehe() { if(!haha() && [] == ![]) { return "^_^"; } function haha() { return false; } return "T_T";}console.log(hehe()); |
第九题:
|
1
2
3
|
var a = function(t) { return t; }(1 + 2).toString();console.log(a); |
第十题:
|
1
2
3
4
5
6
7
8
9
|
function f(a){ console.log(a); console.log(arguments[0]); var a = 10; console.log(a); return a; function a(){};}f(1); |
第十一题:
|
1
2
3
4
5
6
|
console.log(Function instanceof Object);var arr = [];console.log(arr.constructor === Array.prototype.constructor);var num1 = new Object(1);var num2 = new Number(2);console.log(num1.constructor === num2.constructor); |
第十二题: (菜锅友情赞助)
|
1
2
3
4
5
6
|
var a = function b() { console.log(b); console.log(a); return b;}();console.log(b); |
1.func a ; 20
function(){}虽然在return之后,但是这样函数声明被提前了
2.are you kinding?
return 后面不执行
3.function s()…
同1
4.function s()…
同1
5.function s() {
return 3;
}
猜错了,以为是return 0 原来 return 3 还在参数后面执行
6. 0
考眼力啊
7.2,2,2
object是指向而非复制
8.^_^
[] == ![],[]建立新的数组,所以是true。假如是{} != {} 就是报错了,实在不知道为什么
9.著名的括号问题啊,头一次听说,真汗颜 ,见知乎
10.func func 10
11.ture ture ture
一切皆是obj;
12.func(){…};undefined;报错
最后一个是因为 b 在 a 里面,全局里面没有
博主回复:
这些题主要是声明提前的陷阱题,还有几个是比较经典的陷阱题,只是被我稍微修改了下。[] == ![],其实是这样的:![]会转换为false,在等号关系式中,由于两边类型不相同且有一边是Boolean型变量,则转换成数字比较,false-》0 ,[]-》0, 故 [] == ![]
b.getA().call(b)
js一些题目的更多相关文章
- JS稀奇古怪题目
JS稀奇古怪题目: 1.操作对象属性优先级高于普通赋值操作 var a = { n: 1 }; var b = a; //操作对象属性优先级高于普通赋值操作 a.x = a = { n: 2 }; c ...
- JS经典题目解析
此次列举出一些觉得有意思的JS题目(来源于出了名的44题),相信有非常多关于这些题目的博客,写这篇博客的目的在于巩固一些知识点,希望能和读者共同进步. 1. map函数执行过程 ["1&qu ...
- 一道短小精悍的JS小题目
看到题目你是不是以为我在开车,没错,我就不承认,你能咋的,你瞅啥,别瞅我,瞅题 题目是这样式的 结果是啥呀,这里我就不买关子了,结果是undefined,相信基础好一点的大佬们一眼就能看出来,像我这种 ...
- js在线题目
在线题目: https://www.nowcoder.com/ta/js-assessment
- js小题目(持续更新)
总是感觉之前做过的问题很久没碰的话就会忘掉,于是打算专门开一个记录小题目的随笔当题典用. 目录 五种主要数据类型进行值复制 数组去重 数组去重并计数 实现clone()方法,对五种主要数据类型进行值复 ...
- JS面试题目
哪些地方会出现css阻塞,哪些地方会出现js阻塞? js的阻塞特性: 所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等.直到JS下载.解析.执行完毕后才开始继续并行下 ...
- js 一道题目引发的正则的学习
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...
- 2016年JS面试题目汇总
1.怎样添加.移除.移动.复制.创建和查找节点? //1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 ...
- js作用域题目
window.number = 4var obj = { 'number': 4, 'tbl': (function(){ this.number *= 2; console.log(this.num ...
随机推荐
- 关于group by 两个或以上条件的分析
关于group by 两个或以上条件的分析 原文地址:http://uule.iteye.com/blog/1569262 博客分类: 数据库 首先group by 的简单说明: grou ...
- Create,Insert
创建表 create table people ( id int ,name ) ) create table toys ( id int ,name ) ,people_id int ) CREAT ...
- liftover的使用/用法
Lift genome positions Genome positions are best represented in BED format. UCSC provides tools to co ...
- Dreamweaver学习笔记---2016.08.17
静态网页:不访问数据库,直接写入HTML. 动态网页:在网上发布好的,我们可以通过网页预览到的,具有访问数据库的过程. HTML:Hyper Text Markup Language,超文本语音标记. ...
- Open SQL详解
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- SQL——存储过程实例 调用带参数的过程(成绩输出)
create or replace procedure test_score(input in number,output out char) is begin then begin output : ...
- Redis 在新浪微博中的应用
Redis 在新浪微博中的应用 Redis简介 1. 支持5种数据结构 支持strings, hashes, lists, sets, sorted setsstring是很好的存储方式,用来做计数存 ...
- P2P小贷网站业务数据流程分享
P2P小贷网站业务数据流程分享 引言 这是去年年底开发的一个项目,完成后和用户的衔接没有很好的做起来,所以项目就搁浅了.9月以来,看各路P2P风声水起,很是热闹:这里分享下我的设计文档,算是抛砖引玉, ...
- Backbone简介
backbone-------一个实现了web前端MVC模式的JS库-------官方地址 backbone库要建立在underscore库的基础上---------------官方中文地址----- ...
- XAF学习笔记之 Upcasting
通常,我们会定义继承层次结构,假设有类型,CustomerBase,CustomerTrialed,CustomerRegistered三个类型,并且继承结构如下: 业务对象代码定义如下: using ...