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一些题目的更多相关文章

  1. JS稀奇古怪题目

    JS稀奇古怪题目: 1.操作对象属性优先级高于普通赋值操作 var a = { n: 1 }; var b = a; //操作对象属性优先级高于普通赋值操作 a.x = a = { n: 2 }; c ...

  2. JS经典题目解析

    此次列举出一些觉得有意思的JS题目(来源于出了名的44题),相信有非常多关于这些题目的博客,写这篇博客的目的在于巩固一些知识点,希望能和读者共同进步. 1. map函数执行过程 ["1&qu ...

  3. 一道短小精悍的JS小题目

    看到题目你是不是以为我在开车,没错,我就不承认,你能咋的,你瞅啥,别瞅我,瞅题 题目是这样式的 结果是啥呀,这里我就不买关子了,结果是undefined,相信基础好一点的大佬们一眼就能看出来,像我这种 ...

  4. js在线题目

    在线题目: https://www.nowcoder.com/ta/js-assessment

  5. js小题目(持续更新)

    总是感觉之前做过的问题很久没碰的话就会忘掉,于是打算专门开一个记录小题目的随笔当题典用. 目录 五种主要数据类型进行值复制 数组去重 数组去重并计数 实现clone()方法,对五种主要数据类型进行值复 ...

  6. JS面试题目

    哪些地方会出现css阻塞,哪些地方会出现js阻塞? js的阻塞特性: 所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等.直到JS下载.解析.执行完毕后才开始继续并行下 ...

  7. js 一道题目引发的正则的学习

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  8. 2016年JS面试题目汇总

    1.怎样添加.移除.移动.复制.创建和查找节点? //1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 ...

  9. js作用域题目

    window.number = 4var obj = { 'number': 4, 'tbl': (function(){ this.number *= 2; console.log(this.num ...

随机推荐

  1. SqlSever基础 union 与 union all的区别,即 重复项是否全部显示

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  2. 我的android学习经历27

    前几天忙着学校的互联网+项目比赛,没有时间学习android和发一些东西,主要是这两天太累了,我是项目组长,好多东西去弄,今天已经交稿去进行初赛. 马上收拾收拾心情,继续我的andorid菜鸟之路 加 ...

  3. 滤镜模糊效果,利用了文字阴影和透明。其实是抄的iSlider官网的

    <!DOCTYPE html> <html> <meta charset="UTF-8"> <meta name="viewpo ...

  4. linux、windows下导入、导出mysql数据库命令

    一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构:[不是mysql里的命令]mysqldump -u用户名 -p密码 数据库名 > 数据 ...

  5. [HDOJ4609]3-idiots(FFT,计数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4609 题意:n个数,问取三个数可以构成三角形的组合数. FFT预处理出两个数的组合情况,然后枚举第三个 ...

  6. CALayer总结(三)

    CPU VS GPU 动画和屏幕上组合的图层实际上被一个单独的进程管理,而不是你的应用程序.这个进程就是所谓的渲染服务.在iOS5和之前的版本是SpringBoard进程(同时管理着iOS的主屏).在 ...

  7. poj 2187 Beauty Contest (凸包暴力求最远点对+旋转卡壳)

    链接:http://poj.org/problem?id=2187 Description Bessie, Farmer John's prize cow, has just won first pl ...

  8. hdu 4217 Data Structure? 树状数组求第K小

    Data Structure? Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  9. yii-mail yii 发送邮件

    参考网址:http://shoukii0721.iteye.com/blog/1576225 有很多时候我们需要给用户发送邮件,作留言,或者是激活邮件.等用途. 需要注意的是,设置发送的邮件得有SMT ...

  10. [转载] 为 Key-Value 数据库实现 MVCC 事务

    http://mp.weixin.qq.com/s?__biz=MzA5ODM5MDU3MA==&mid=400086920&idx=1&sn=b8174184059e2886 ...