笔试经常会考的一些JavaScript基础
很多人在网上找js的笔试题,大部分题都很有深度,今天我们就来看看那些看似简单得不能再简单的题,我们是怎么失分的。
1 变量相关的问题
var a = 10; function demo(){ b = 20;
var c=2; console.log(a + b); }
console.log(c); //is not define console.log(a); // 10 console.log(b); //20
console.log(delete a); //false
console.log(delete b); //true
对于这道题的考点有两个 :
Ⅰ.局部变量和全局变量
ⅰ.全局变量:定义在函数外面的变量就是全局变量 ;局部变量:定义在函数内部的变量就是局部变量;
ⅱ.局部变量的作用域:就是只是在函数体的内部起作用;全局变量:在页面中都起作用;
ⅲ.在函数内部没有使用 var 关键字声明的变量,会自动成为全局变量,也就是成为直接添加在window上的属性;
Ⅱ. delete 关键字可以删除哪些变量
ⅰ. delete 关键字可以删除没有使用var 声明的变量;
ⅱ.delete 无法删除用var声明的变量;
ⅲ.delete删除成功返回true,失败返回false ,如果删除的变量或者属性根本不存在,也会返回true
2 赋值问题
var str1 = "abc"; var str2 = str1; console.log(str1); console.log(str2); str1 = "love"; console.log(str2); obj1 = {name:"Bob"}; var obj2 = obj1; console.log(obj1.name); console.log(obj2.name); obj2.name="Green"; console.log(obj1.name);
输出结果:
abc
abc
abc
Bob
Bob
Green
考点:值类型的赋值与引用类型的赋值
Ⅰ.值类型(5种):number string boolean undefined null
ⅰ. 值类型的赋值操作:是把等号右边的内容(具体的数据)给左边的变量
ⅱ. 特点:修改其中一个值对另一个值没有影响,因为他们是相互独立的
Ⅱ. 引用类型:除了值类型以外的其他类型,例如 Function Object Array Date .......
ⅰ. 把等号右边的内容(地址)复制一份给左边的变量
ⅱ.特点:修改其中一个值,对另一个有影响,因为它们共享的一份数据
图解分析:

2 运算问题
2.1 在看这道运算符相关的题目之前,我们首先得知道,字符和数值都是可以参加逻辑运算的。先上一道简单的小菜:
var num1=10; var str1 = "10"; var num2 = 20; console.log(num1 + num2 + str1); console.log(num1 + str1 + num2);
打印结果:
console.log(num1 + num2 + str1); //3010 console.log(num1 + str1 + num2); //101020
这道题目打印的结果很容易理解:看相加的类型是不是数值
① 如果是:数值直接相加
② 如果数字类型和字符串相加的时候,数字类型会转换为字符串类型
2.2 升级版的 :数值的逻辑运算
var num1 = 7; var num2 = 8; var num3 = 0; var num4 = 0; // 与运算 console.log(num1 && num2); console.log(num2 && num1); console.log(num1 && num3); console.log(num3 && num4); console.log(num3 && num2); //或运算 console.log(num1 || num2); console.log(num2 || num1); console.log(num1 || num3); console.log(num3 || num4); console.log(num3 || num2);
运算结果:
console.log(num1 && num2); //8 console.log(num2 && num1); //7 console.log(num1 && num3); //0 console.log(num3 && num4); //第一个0 console.log(num3 && num2); //0 //或运算 console.log(num1 || num2); //7 console.log(num2 || num1); //8 console.log(num1 || num3); //7 console.log(num3 || num4); //0第二个 console.log(num3 || num2); //8
题目分析:
① 首先,我们需要知道所有的数值都有真假性,除0以外,所有数值都为真;
② 逻辑 && 和逻辑 || 都有短路现象:
⑴ 逻辑 && 的短路现象:因为逻辑 &&是一个条件为假,则为假;所以,当第一个条件为假时,第二个条件不会执行
⑵ 逻辑 || 的短路现象:因为逻辑 || 是一个条件为真,则为真;所以,当第一个条件为真时,第二个条件不会执行
结论分析:
Ⅰ. 数值参与逻辑运算时,返回的值不是boolean型,而是其中一个数值。
Ⅱ. 对于&&运算:
ⅰ. 如果 num1 && num2 结果为真,那么返回的最终的值是第二个表示真的值;
ⅱ. 如果结果是假,那么返回第一个为假的值。
Ⅲ. 对于||运算:
ⅰ.如果 num1 || num2 结果为真,那么返回第一个为真的值;
ⅱ. 如果为假,返回第二个为假的值。

浙公网安备 33010602011771号