JavaScript常见问题总结 | 豆包MarsCode AI刷题

38 阅读4分钟

1. 什么是 JavaScript ?

JavaScript 是一种具有面向对象的、解释型的、基于对象和事件驱动的、跨平台的、弱类型的程序设计语言

2. JavaScript 与 ECMAScript 的关系?

ECMAScript 是规则,JavaScript 是对规则的体现

3. 变量的命名规则?

严格区分大小写,由英文、数字、下划线、$组成,推荐使用驼峰命名法,不能使用保留字和关键字,见名知意,名字不能重复

4. window.onload 的作用?

当页面加载完成后再执行

5. js 数据类型?

基本数据类型有:Number、String、Boolean、Undefined、Null;

复合数据类型有:Object(object、array、function)

6. null 和 undefined 的区别?

null 表示值为空,但是为 object 类型

undefined 表示变量没有初始化

7. 运算符的种类?

算术运算符 + – * / % ++ —

赋值运算符 = += -= *= /=

比较运算符 > >= < <= == != === !==

逻辑运算符是与 &&,或 ||, 非 !

三目运算符 // 条件 ? 语句一 : 语句二 如果条件成立,执行 ? 后面语句,不成立执行:后面的语句

8. var a = 10;var b = a++; a、b 最后的结果是?

a=11,b=10

9. “==”与“===”的区别?

==值一样,类型可以不一样

===值一样,类型一样

10. console.log(0.1+0.2 == 0.3)

false ,因为小数相加会有一点偏差

11. NaN 会在什么样的情况下出现呢?列举出现这种情况的代码

	typeof Number(undefined));//NaN

	typeof Number([1,2]));//NaN

	typeof Number({}));//NaN

	typeof Number(10abc));//NaN
 
 
 

12. 列举三种强制类型转换和 2 种隐式类型转换

	Number() String() parseInt()

	console.log(1+‘2’);

	console.log(2-true);
 
 
 

13. document.write() 与 innerHTML 的区别?

  • document.write()可以识别标签。
  • document.write()会覆盖标签中已有的内容, 但是不会覆盖 document.write()添加的内容。
  • document.write()只能操作 body 的内容。
  • document.write() == document.body.innerHTML。

14. this 对象的理解?

  • 在事件处理函数中,this 指向触发事件的元素
  • 在全局中(普通函数)中,this 指向 window
  • 谁调用指向谁

15. 写一个获取非行间样式的函数

	function getStyle(obj, attr) {  //obj 表示元素 attr 表示属性

	    if (obj.currentStyle) {

	        return obj.currentStyle[attr]// ie 浏览器

	    } else {

	        return getComputedStyle(obj)[attr]// 标准浏览器

	    }

	}
 
 
 

16. 说说你对作用域链的理解?

作用域链是 JS 的查找机制,从当前作用域查找,若没有则向上一级作用域查找,一直到最外层,如果都查找不到则返回 is not define

17.写出下列函数的运行结果

	var x = 1, y = z = 0;

	function add(n) {

	    n = n + 1;

	};

	y = add(x);

	function add(n) {

	    n = n + 3;

	};

	z = add(x);

	console.log(x, y, z);
 
 
 

结果: undefined undefined

18. 请解释变量提升?

  • 变量提升(预解析)找 var 的时候,如果存在 var 关键字,则会将这个变量先存储下来,存储的形式为:var a = undefined,预解析的时候变量中存的都是 undefined,
  • 等到逐行解析遇到表达式即 + – * / % ++ — = 等操作才会改变变量的值。找 function 的时候,会将整个函数都保存下来。找参数的时候,即执行函数时,函数内部可以看作是一个小的区域,有自己的预解析,参数就跟变量 var 一样。

19. 函数声明和函数表达式声明的区别?

  • 函数声明 function 函数名(){}
  • 函数表达式声明 var f =function (){console.log(函数表达式);} f();
  • 区别:解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。

20. JavaScript 两种变量范围有什么不同?

  • 全局变量: 直接在 script 标签下声明的变量,任何地方都能访问,任何地方都能对其值进行改变。
  • 局部变量: 函数内部定义的变量,函数内能访问,出了函数的括号就不能访问(垃圾回收)。

21. 定时器的分类?他们的区别及用法是什么?

  • setInterval( 函数 ,间隔时间(单位毫秒))
  • setTimeout(函数,间隔时间(单位毫秒))

22. js 有哪些内置对象?

  • 时间对象 date, 字符串对象 string,数学对象 Math,数值对象 Number,
  • 数组对象 Array,函数对象 function, 函数参数集合 arguments,
  • 布尔对象 Boolean,基础对象 Object