刷题记

作者: 心彻 | 来源:发表于2017-12-21 19:44 被阅读17次

如下代码输出结果:

var a = 1;
function f(){
    var a = 2;
    var e = eval;
    e('console.log(a)');
}
f();

结果是1

这题考察的是eval的用法

直接调用时,作用域时局部的,间接调用时,作用域时全局的,所以如果代码修改如下:

var a = 1;
function f(){
    var a = 2;
    eval('console.log(a)');
}
f();

结果是2

JavaScript模块化编程的参考资料:
Javascript模块化编程(一):模块的写法
Javascript模块化编程(二):AMD规范
Javascript模块化编程(三):require.js的用法

function A() {
    this.do=function() {return ‘foo’;};
}
A.prototype=function() {
    this.do=function() {return ‘bar’};
};
var x=new A().do();

x 的值是:foo
知识点:只有实例对象上不存在的属性和方法才会去原型对象上找。

var x = new Boolean(false);
if (x) {
  alert('hi');
}
var y = Boolean(0);
if (y) {
  alert('hello'); 
}

结果只会alert一个hi
new Boolean()返回一个对象
Boolean()返回一个具体的布尔值

ECMAScript 继承机制实现

  • 只要 协议 、 域名 、 端口 有任何一个 不同, 都被当作是 不同 的域。
  • js如何判断一个对象是不是Array?
  • 加号优先级高于 三目运算。
  • var a=b=3 相当于 var a = 3;b = 3;b是全局的
var f = function g() {
        return 23;
    };
typeof g();

结果是Error
解析:
在 JS 里,声明函数只有 2 种方法:
第 1 种: function foo(){...} (函数声明)
第 2 种: var foo = function(){...} (等号后面必须是匿名函数,这句实质是函数表达式)

除此之外,类似于 var foo = function bar(){...} 这样的东西统一按 2 方法处理,即在函数外部无法通过 bar 访问到函数,因为这已经变成了一个表达式。

但为什么不是 "undefined"?
这里如果求 typeof g ,会返回 undefined,但求的是 g(),所以会去先去调用函数 g,这里就会直接抛出异常,所以是 Error。

--------------------------------update on 2 Feb 2018----------------------------------------
七月份的尾巴_3b13同学的指出,还可以借助Function这个构造函数来声明函数,方式如下:
var foo=new Function(参数1,参数2,...函数体);
参考:JavaScript几种函数声明方式的区别

相关文章

  • 刷题记

    如下代码输出结果: 结果是1 这题考察的是eval的用法 直接调用时,作用域时局部的,间接调用时,作用域时全局的,...

  • 刷题记录

    public static void main(String[] args) {}

  • LeetCode刷题记录

    LeetCode刷题记录 0305: 404、405 改变策略:根据面试频率 0306: 7 、8 、10 、11...

  • LeetCode刷题记录

    最近沉迷学习无法自拔,惊闻LeetCode中文版已经上线,故决定怒刷一波,顺便探究探究Python3与Java的特...

  • LeetCode刷题记录

    1. String, StringBuilder, StringBuffer的比较 要进行字符串的翻转,可以直接使...

  • 领扣刷题记numUniqueEmails

  • 刷题记录--综合

    * Always remember to check the quality/availability of th...

  • LeetCode刷题记录

    我是一名Android Developer,这里是我对Leetcode中文网中所出算法题目的解答记录。主要使用Ja...

  • Wechall刷题记录

    [Training: Programming 1] When you visit this link you re...

  • Leecode刷题记录

    1.给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数...

网友评论

      本文标题:刷题记

      本文链接:https://www.haomeiwen.com/subject/dwjgixtx.html