console.log在不同的地方也会导致不同

  1. var a = 1;
  2. function b() {
  3. a = 10;
  4. return;
  5. function a() {}
  6. }
  7. b();
  8. console.log(a);

2018年4月18日更新:

第一题:

  1. var a=3
  2. var b=function(){
  3. alert(a)
  4. var a = 4
  5. alert(a)
  6. }
  7. b()

第二题:

  1. var a=3
  2. var b={
  3. a:4,
  4. getA:function(){
  5. this.a=5
  6. return function(){return this.a}
  7. }
  8. }
  9. b.getA()()

第三题:

第二题中如何得5?

(答案在最下面)

再看一个类似的:看不太懂二者之间的区别 a和foo.bar.baz()

  1. var x = 0;
  2. var foo = {
  3. x:1,
  4. bar:{
  5. x:2,
  6. baz: function () {
  7. console.log(this.x)
  8. }
  9. }
  10. }
  11.  
  12. var a = foo.bar.baz
  13. foo.bar.baz() //
  14. 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:

  1. function funny(a) {
  2. console.log("1: " + a);
  3. var a = 10;
  4. }
  5. console.log(funny(8));

跟我想的恰恰相反……

step2:

func的arg,在func里面又被定义为变量,返回;在被定义为func会有哪些影响呢?

根据例子来看,return后function还是有效的

step3:

假如这样的话,又会如何呢?

  1. function funny(a) {
  2. console.log("1 : " + a);
  3. var a = 10;
  4. arguments[0] = 20;
  5. return a;
  6. function a() {
  7. a = 100;
  8. }
  9. }
  10. 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:函数式和函数放在一起,先执行哪个呢?

  1. function s() {
  2. return 1;
  3. }
  4. var a = (function(s){
  5. return s;
  6. function s() {
  7. return 3;
  8. }
  9. s = function() {
  10. return 4;
  11. };
  12.  
  13. s = 5;
  14. })();
  15. console.log(a);

step2:return在上面的时候,无论两个如何放置都先执行s()

return 在下面的时候,无论两个如何放置都先执行var s = func()

这是为什么呢?

  1. var a = (function(){
  2. return s;
  3. s = function() {
  4. return 4333;
  5. };
  6. function s() {
  7. return 3;
  8. }
  9. })();
  10. console.log(a);
  1. var a = (function(){
  2.  
  3. s = function() {
  4. return 4333;
  5. };
  6. function s() {
  7. return 3;
  8. }
  9. return s;
  10.  
  11. })();
  12. 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. AES加密算法-128位高安全,高速度

    网上资料显示,下一代加密技术会围绕着AES技术进行.初出茅庐,学习编写了加密代码,如下所示 package com.bao.tools.encryption; import java.security ...

  2. C# Ini配置文件

    public class INIUserAccound { static IniFile Ini = new IniFile(AppDomain.CurrentDomain.BaseDirectory ...

  3. Queue 应用——拓扑排序

    1. 拓扑排序 题目描述:对一个有向无环图(Directed Acyclic Graph, DAG)G进行拓扑排序,是将G中所有顶点排成线性序列,是的图中任意一堆顶点u和v,若边(u, v)在E(G) ...

  4. Freebie - Utility Form: Generate Excel Report From SQL Query In Oracle Forms 6i And 11g

    Sharing a form to generate Excel file report from SQL query in Oracle Forms. This form can be used i ...

  5. Oracle 分页实现

    --分页实现------实行两行一页 --1 先查询按编号排序的所有用户信息 select t.* from T_USER t order by user_id ; --2 查询数据的前四行, ; - ...

  6. Open SQL详解

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  7. DB2常识

    1.DB2组件 appendixa. db2 database product and packaging informatin一节AESE: 高级企业服务器版(Advanced enterprise ...

  8. iOS - CoreMotion

    前言 NS_CLASS_AVAILABLE(NA,4_0) @interface CMMotionManager : NSObject @available(iOS 4.0, *) public cl ...

  9. 漫谈 Greenplum 开源背后的动机

    漫谈 Greenplum 开源背后的动机  Greenplum是一家总部位于美国加利福尼亚州,为全球大型企业用户提供新型企业级数据仓库(EDW).企业级数据云(EDC)和商务智能(BI)提供解决方案和 ...

  10. MySql 去重且指定某字段在前的排序方法

    今天遇到一个棘手的数据查找并去重的问题: 情况: 1.取出数据库中的数据: 2.同一字段A,不同情况<值,如A值为:a1,a2>下取出的其他数据可能相同: 3.将2情况下的重复数据< ...