js面试题(一)

219 阅读4分钟

JS中的数据类型都有哪些?以及之间的区别?

简单数据类型:number string null undefined Boolean 复杂数据类型:object 简单数据类型是值类型 复杂数据类型是引用类型

检测数据类型的四种方式?

  1. typeof()
  2. instanceof()
  3. constructor
  4. Object.prototype.toString.call()

常用浏览器的内核都有哪些?

  • webkit内核:谷歌 手机国产等浏览器
  • Gecko内核:火狐firefix
  • Presto内核 opera<14版本
  • trident内核 IE

指出以下定义变量错误的方式:

A:var _zhufeng='珠峰';
B:var 8zhufeng='珠峰';//错误,数组不能开头
C:var $zhufeng='珠峰';
D:var zhu-feng='珠峰';
E:var parent='培训';//错误保留字
F:var default='培训';//错误关键字

以下哪种方式可以弹出‘珠峰’?

A:<div onclick="alert("珠峰")"></div>//不能 双引号里面包裹单引号 或者单引号里面包裹双引号
B:<div onclick="alert('珠峰')"></div>//OK
C:<script>
      alert('珠峰');
   </script>
D:<script src='js/zhufeng.js'>// 错误,引入其他文件的script标签中不能写代码
      alert('珠峰');
   </script>

写出下面程序的输出结果

var num = parseFloat('width:100px');//num =NaN
2.if(num===100){
3.   alert(1);
4.}else if(num===NaN){
5.   alert(2);
6.}else if(typeof num==='number'){
7.   alert(3);
8.}else{
9.   alert(4);
10.}
//输出3

写出下面程序输出几次,结果分别是多少?

for(var i=0;i<10;i+=2){
    if(i<=5){
        i++;
        continue;
    }else{
        i+=3;
        break;
    }
    console.log(i);
}
console.log(i);
  1. js中常用的数据类型有哪些?

    • 基本数据类型(值类型)number string nullundefined Boolean
    • 复杂数据类型(引用引用)object(普通对象 数组对象 正则对象 Math对象 日期对象 类数组对象)function
  2. 浏览器中常用的内核有哪些?

    • webkit 谷歌 safari 手机 opera》14
    • gecko ff
    • presto opera《14
    • trident IE
  3. 数据类型之间的区别?

    • 基本数据类型按值操作
    • 引用类型操作的是堆内存的空间地址
  4. 列举常用的关键字和保留字?

    • 关键字
      • break
      • continue
      • if
      • else
      • for
      • var/let /const/function /class/import/export
      • instanceof/typeof
      • return
      • switch/case
      • do/while
      • delete
      • new
      • default
      • this
    • 保留字
      • boolean
      • float
      • int
      • double
      • long
      • char
  5. js 中创建变量的几种常用方式?

    • var/let/const/function/class/import
  6. 浏览器常用的输出方式,除了console.log还有那些?

    • 输出console.log()
    • console.dir()
    • console.table()
    • 弹窗alert()
    • prompt
    • confirm
    • 三种方式的输出结果都是先经过toString转换为字符串
    • 三种方式会阻断js代码的执行只有当窗口关掉js才会继续执行
    • document.write()输出结果是字符串
  7. script标签所放的位置有什么样的影响?

  • 经常放到body最后面,是为了保证页面结构加载完成采取做这些事情
  • 放到头部可能导致无法获取到需要操作的元素
  • window.onload=function(){}
  1. 写出输出答案
let a={
	n:1
}
let b=a;
a.x=a={
	n:2
}
console.log(a.x)//undefined
console.log(b)//{n:1,x:{n:2}}
  1. 第九道题
var a='abc'+123+456     //'abc123456'
var b='456'-'123'//'333'
var c=100+true+21.2+null+undefined+'Tencent'+[]+null+9+false//'NaNTencentnull9false'
console.log(a,b,c)
  1. 第十道题
var str='abc123';
var num=parseInt(str);
if(num == NaN){
	alert(NaN)
}else if(num === 123){
	alert(123)
}else if( typeof num == 'number'){
	alert('number')
}else{
	alert('str')
}
  1. 第十一题
var a=0;
var b=a;
b++;
alert(a) 0
var o={};
var b=0;
b.a=10;
alert(o.a)//10
  1. 输出‘1’的有哪些?
alert(1)    √
console.log(parseInt(1.3))  ×
console.log(1) ×
console.log(isNaN(1))   false
console.log(parseInt('1')) ×

  1. 能输出'undefined'的是?
console.log(alert(1)) alert(1)返回值是undefined 但不是字符串类型的
typeof undefined √ 字符串undefined
console.log(parseInt(undefined)) × NaN
isNaN(undefined) × true


let i=1;
/**
 * 1-2(i变成2)+1(变成1)+1+2(变成2)-1(变成1)-1
 */
console.log(1-(++i)+(i--)+1+(i++)-(--i)-1);//1
console.log(i);//1
  1. 得到true的是?
isNaN(null)  false 
isNaN(parseInt(null))   true
Number(null) 0
parseFloat(null)  NaN
  1. 输出程序
parseInt('') NaN
Number('') 0
isNaN('') false
parseInt(null)NaN
Number(null)0
isNaN(null)0
parseInt('12px')12
Number('12px')NaN
isNaN('12px')NaN
  1. 程序输出的结果
if(isNaN(NaN) == ''){
	console.log('mengyang')
}else{
	console.log('yuanyuan')
}
  1. 程序输出的结果
let x=[1,2,3];
let y=x;
let z=[4,5,6];
y[0]=10;
y=z;
z[1]=20;
x[2]=z=30;
console.log(x,y,z)
  1. 程序输出结果
for(var i=0;i<10;i++){
	console.log(i) //0
	break//此循环直接结束
}
console.log(i) //0  

for(var i=0;i<10;i++){
	continue//当前循环立即结束,开始下一次循环
	console.log(i)
}
console.log(i) //10 

for(var i=1 ;i<=10;i+=2){
	if(i<=5){
		i++
		continue
}else{
	i-=2
	break
}
i--
console.log(i)
}
console.log(i)// 输出一次 5

for(var i=3;i<12;i++){
	if(i<3){
		i++
		break
	}
	if(i>9){
		i+=2
		continue
	}
	i--
}
console.log(i)

  1. 改成三元运算符 输出结果
let a=12
if(a>=0 &&a<=20){
	if(a%2 === 0){
		a+=2
}else{
	a-=2
}
console.log(a)//14


a>=0 &&a<=20?(a%2 === 0?a+=2:null):(a-=2)

  1. 算出输出的结果
let a=typeof typeof typeof [12,23];
console.log(a) 'string'


/**
 * 1+0+1+NaN+
 'NaNTencentfalseundefinednull'
 */

let result = 1+null+true+undefined+'Tencent'+false+[]+undefined+null;
console.log(result);
  1. 算出输出的结果
var a='10'
a ==10?a++:a--
console.log(a)//11

let b='10'
switch(b){
	case 10:
	b++
	break;
	default:
	b--
}
//case值的比较是===比较的
console.log(b)//9
  1. 前++后++计算
let i=3;
console.log(5+(++i)+(i++)+3-2+(--i)+(i--)-2)

  1. 扩展
 //true
!(!'Number(undefined)')
//'2undefined'
isNaN(parseInt(new Date()))+Number([1])+typeof undefined
//false+true+true+'boolean'----'2boolean'
Boolean(Number(''))+!isNaN(Number(null))+Boolean('parseInt([])')+typeof !(null)
//'2.6number'
parseFloat('1.6px')+parseInt('1.2px')+typeof parseInt(null)
//false
isNaN(Number(!!Number(parseInt('0.8'))))
//122
console.log(1+'2'+'2')
//false
!typeof parseFloat('0')
//0
Number('')
//'string12false'
typeof 'parseInt(mull)'+12+!!Number(NaN)
//NaN
!typeof (isNaN(''))+parseInt(NaN)
//'booleantrue'
typeof !parseInt(null)+!isNaN(null)