javascript笔试题(一)

说明

下面的一些笔试题是我在学习的过程中(看视频,看书)遇到的一些有关js笔试的题目,我把它们都一一记录下来,用来分享给大家!

1、分析下面的js代码段,写出代码的运行结果。
var str = "abc";
str += 1;
var test = typeof(str);

if (test.length == 6) {
    var sign = "typeof返回结果可能为String";
}

console.log(sign);
分析

考点一是隐式类型转换,str是一个字符串类型,它在与Number类型的变量进行+运算时会将与它相加的变量的类型转变为字符串类型。所以str在进行+1后的值为“abc1”。
考点二是typeof的返回值,当使用typeof(str)时,返回值是"String",即test=“String”。
考点三是字符串的长度,test.length的返回值是6,所以if语句为真,sign的值为“typeof返回结果可能为String”。

运行结果
typeof返回结果可能为String
2、分析下面的js代码段,写出代码的运行结果。
function Employee(name, code) {
	this.name = "wangli";
    this.code = "A001";
}

var newEmp = new Employee("zhangming", "A002");
document.write("雇员姓名:" + newEmp.name + "<br>");
document.write("雇员编号:" + newEmp.code + "<br>");
分析

构造函数Employee有两个形参name和code,但是它里面的name和code属性并没有接收实参传进来的值,而是给两个属性直接命名。所以当newEmp传入name和code实参时,并没有被接收,而且它将会接收构造函数Employee的name和code两个属性,即newEmp.name = “wangli”,newEmp.code = “A001”。

运行结果
雇员姓名:wangli
雇员编号:A001
3、分析下面的js代码段,写出代码的运行结果。
function Person(name, age, sex) {
    var a = 0;
    this.name = name;
    this.age = age;
    this.sex = sex;

    function sss() {
        a++;
        document.write(a);
    }

    this.say = sss;
}

var person = new Person();
person.say();
person.say();
var person1 = new Person();
person1.say();
分析

person通过new的方式,将会接收构造函数Person的say方法,所以第一次say函数调用时,此时a=0,经过++运算后的值为1。接着又立马调用了say方法,此时a=1,经过++运算后的值为2。person1也通过new的方式,将会接收构造函数Person的say方法,此时的a=0,经过++运算后的值为1。

运行结果
1
2
1
4、分析下面的js代码段,写出代码的运行结果。
var x = 1,
    y = z = 0;

function add(n) {
    return n = n + 1;
}

y = add(x);

function add(n) {
    return n = n + 3;
 }

z = add(x);
console.log(x, y, z);
分析

此题考点是预编译。在函数执行之前将经过预编译,第一个add返回的是n = n + 1,但是下面的同名函数add将会覆盖第一个add函数,即此时的返回值n = n + 3。所以y和x的值都是4。

运行结果
1 4 4
5、写一个方法,求一个字符串的字节长度。
分析

我们知道,一个中文字符占2个字节,一个英文字符占1个字节。字符串有一个charCodeAt()方法,
可以返回指定位置上的字符Unicode编码,这个返回值是0~65535之间的整数,当返回值<=255时
为英文,当返回值>255时为中文。为此我们解题思路就有了。

示例代码如下
//首先定义一个字符串str
var str = "this是a随意的string";
var len = 0;//len变量用于接收字节长度

//定义函数toPrintLen用来计算str的字节长度
function toPrintLen() {
	//将str的每一位进行Unicode编码计算
	for (var i = 0; i < str.length; i++) {
		//返回的编码值小于255,代表该位置上的字符是英文,字节长度为1
        if (str.charCodeAt(i) <= 255) {
            len += 1;
        } else {
        	//返回的编码值大于255,代表该位置上的字符是中文,字节长度为2
            len += 2;
        }
    }

	//经过循环后,返回并输出最终的len
    return document.write(len);
}

//函数调用,将会输出len
toPrintLen();
运行结果
19

今天先分享5道题目,如果哪里有错误,希望您能够批评指导。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值