JS能力评测经典题----编码规范

龚玄天
2023-12-01

题目一:

给定的 js 代码中存在全局变量,请修复
function globals() {
    myObject = {
      name : 'Jory'
    };

    return myObject;
}
解法:
/* 在JavaScript中,如果不使用var声明变量,则该变量被视为全局变量。*/
/* 直接加var */
function globals() {
    var myObject = {
      name : 'Jory'
    };

    return myObject;
}

/* 把对象归属改为原型 */
function globals() {
    globals.prototype.myObject = {
        name : 'Jory'
    };

    return globals;
}

/* 把对象改为匿名的 */
function globals() {
    return { name : 'Jory' };


题目二:

请修复给定的 js 代码中,函数定义存在的问题

function functions(flag) {
    if (flag) {
      function getValue() { return 'a'; }
    } else {
      function getValue() { return 'b'; }
    }

    return getValue();
}


解法:

/* else中的语句相当于将if中的function重写,因此无论flag为何值,返回的方法始终为重写后的方法。将方法赋值给一个变量,方法就不会被重写 */

/* 将方法赋值给一个变量 */
function functions(flag) {
    var getValue = null;
    if (flag) {
        getValue = function () { return 'a'; }
    } else {
        getValue = function () { return 'b'; }
    }

    return getValue();
}

/* 修改为闭包形式 */
function functions(flag) {
    if (flag) {
        return (function() { return 'a'; })();
    } else {
        return (function() { return 'b'; })();
    }
}

题目三:

修改 js 代码中 parseInt 的调用方式,使之通过全部测试用例

示例:

示例1

输入

'12'

输出

12

示例2

输入

'12px'

输出

12

示例3

输入

'0x12'

输出

0


/* parseInt(string, radix);
   当参数radix的值为0,或没有设置该参数时,parseInt()会根据 string 来判断数字的基数。
   如果string以"0x"开头,parseInt()会把string的其余部分解析为十六进制的整数。
   如果string以0开头,那么ECMAScript3允许parseInt()的一个实现把其后的字符解析为八进制
   或十六进制的数字。如果string以1~9的数字开头,parseInt()将把它解析为十进制的整数 */

/* 根据示例的意思,我们可以看出它要求我们将所有输入转换成十进制输出 */
function parse2Int(num) {
    return parseInt(num, 10);
}

题目四:

判断 val1 和 val2 是否完全等同

function identity(val1, val2) {
    return val1 === val2;
}



 类似资料: