Javascript面试题(1)

问题1:作用域

(function() {
    var a = b = 5;
})();
console.log(b);
// 非严格状态显示  5
// a 是局部变量,b 是全局变量
// 严格状态显示 b is not defined

(function() {
    ‘use strict‘;
    var a = window.b = 5;
})();
console.log(b)
// 严格状态下显示 5

问题2:创建“内置”方法

        window.onload = function(){
            var str = "hello";
            var oText = document.getElementById(‘text‘);
// Javascript的继承及原型属性的知识,下面这个方法可以检测在自己定义函数之前有没有这个函数存在,避免重复定义
            String.prototype.repeatify = String.prototype.repeatify || function(times){
                var str = ‘‘;
                for(var i=0;i<times;i++){
                    str += this;
                }
                return str;
            }
            oText.innerHTML = str.repeatify(3);
        }

问题3:声明提前

        window.onload = function(){
            function test(){
                console.log(a);
                console.log(foo());
                var a=1;
                function foo(){
                    return 2;
                }
            }
            test();
        }
// 上面这段代码相当于下面这段代码
          window.onload = function(){
             function test(){
                 var a;
                 function foo(){
                    return 2;
                  }
                 console.log(a);
                 console.log(foo());
                 a = 1;
                 }

              test();
        }

问题4:Javascript中的this

        window.onload = function(){
            var fullname = ‘John Doe‘;
            var obj = {
                fullname:‘Colin lhrig‘,
                prop:{
                    fullname:‘Aulia De Rose‘,
                    getFullname:function(){
                        return this.fullname;
                    }
                }
            }
            var oText = document.getElementById(‘text‘);
            oText.innerHTML = obj.prop.getFullname();
        }
// 显示结果为 Aulia De Rose
            var test = obj.prop.getFullname;
            oText.innerHTML = test();
// 显示结果为 John Doe

  Javascript中关键字this所指代的函数上下文,取决于函数是怎样被调用的,而不是怎么被定义的。在第一个console.log(),getFullname()被作为obj.prop对象被调用。因此,当前的上下文指代后者,函数返回这个对象的fullname属性。相反,当getFullname()被赋予test变量,当前的上下文指代全局变量window,这是因为test被隐形的作为全局变量的属性。基于这一点,函数返回window的fullname。

问题5: call()和apply()

        window.onload = function(){
            var fullname = ‘John Doe‘;
            var obj = {
                fullname:‘Colin lhrig‘,
                prop:{
                    fullname:‘Aulia De Rose‘,
                    getFullname:function(){
                        return this.fullname;
                    }
                }
            }
            var oText = document.getElementById(‘text‘);
            oText.innerHTML = obj.prop.getFullname();
        }
// 显示结果为 Aulia De Rose
            var test = obj.prop.getFullname;
            oText.innerHTML = test.call(obj.prop);
// 显示结果为 Aulia De Rose

  call() 或者 apply()方法可以强制转换上下文

时间: 2024-10-27 10:20:38

Javascript面试题(1)的相关文章

Javascript面试题解析

Javascript的一些面试题让很多同学感到头疼,下面就根据兄弟连教育(www.lampbrother.net)毕业学员面试遇到的面试题,给大家做一个简单的分享,希望对初入职场的你们有一些帮助:Javascript面试题解析. 第一题 /* 解析: + 优先级大于 ? 此题等价于: 'Value is true' ? 'Something' : 'Nothing' 所以结果是:'Something' */ var val = 'smtg'; console.log('Value is ' +

javascript 面试题

面试题: 1.下面代码运行结果 var bl = false; $.ajax(url, { //... success: function(){ bl = true; } }); while ( !bl ) { alert( bl ); } alert( bl ); // 结果大家自己去想,这道题是面试官临时写的,简单直接,很好的考察你是否理解javascript中的运行机制,很棒的一道面试题 2.扩展Array原型,编写一个去除数组重复项的方法 // 算法一,两层循环,性能差 Array.pr

一道 JavaScript 面试题

有一道 JavaScript 面试题. f = function () { return true; }; g = function () { return false; }; (function() { if (g() && [] == ![]) { f = function () { return false; }; function g() { return true; } } })(); console.info(f()); 首先看前两行 var f = function () {

小猿圈之2019年前端JavaScript面试题(二)

小猿圈前端讲师今天继续给你总结js面试题,前面一篇文章咱们已经有一片js基础部分面试题,今天小猿圈web讲师为你讲解js前端应用设计问题,一定要好好看哦,为了能赢在其他人前面. JavaScript前端应用设计问题 1.解释单向数据流和双向数据绑定. Angular1.x基于双向数据绑定,而React,Vue,Elm等基于单向数据流架构. 2.单向数据流架构在哪些方面适合MVC? MVC拥有大约50年的悠久历史,并已演变为MVP,MVVM和MV*.两者之间的相互关系是什么?如果MVC是架构模式,

一个javascript面试题

javascript面试题代码: <script type="text/javascript"> function fun(x,y){ console.log("log====fun外部x值="+x+",y的值="+y+"下一步输出y的值="+y); console.log(y); return{ fun:function(m){ console.log("x的值="+x); console.l

5个经典的JavaScript面试题

在IT界中公司对JavaScript开发者的要求还是比较高的,但是如果JavaScript开发者的技能和经验都达到了一定的级别,那他们还是很容易跳到优秀的公司的,当然薪水就更不是问题了.但是在面试之前,面试准备也应该足够的充分,毕竟不是 每个优秀的开发者都能在短时间内表现自己.在这篇文章中,我将会列出5个常见的前端开发面试题.看到这里你证明你一定是个程序员或是HR了,不防把文章看 完,了解一下自己还有什么不足之处,有什么问题希望大家可以在留言中交流. 问题1: 作用域 看一下下面的代码: (fu

一道Javascript面试题引发的血案

文章首发于szhshp的第三边境研究所,转载请注明 先来看几道面试题,公司的开发们都尝试做了一下,然而基本没有人能够全部答对. 覆盖的考点很多,也有一些难度,题目挺有意思建议手动执行一边玩玩. Question 1 for (var i = 0; i <5 ; i++) { setTimeout(function(){ console.log(i) ),1000} } console.log(i) Q:这道题目会输出什么? A:这道题目还比较简单,如果对Javascript稍微有一点深入的同学都

Javascript面试题浅析

分享几道JavaScript相关的面试题. 字符串反转 这这里提供了两种解题思路.如果各位读者还有其他的思路,可以分享交流! 第一方法: function reverse(str){ var sp = str.split(','); //保存反转之后的字符串 var new_str = ''; /*从后往前取,用逗号分隔*/ for(var i = sp.length-1;i>=0;i--){ new_str += sp[i]+','; } /*取到length-1,否则会取到最后一个逗号.*/

前端程序员经常忽视的一个JavaScript面试题

在网上找到一个有关JavaScript的面试题,特整理如下: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () { alert (2);}; Foo.prototype.getName = function () { alert (3);}; var getName = function () { alert (4);}; function getName

JavaScript面试题:重复输出一个给定的字符串

面试题 重复输出一个给定的字符串(str第一个参数)n 次 (num第二个参数),如果第二个参数num不是正数的时候,返回空字符串. function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3); 提供测试情况: repeatStringNumTimes("*", 3) //应该返回 "***". repeatStringNumTime