原生js的一些题

Posted Lumbago~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原生js的一些题相关的知识,希望对你有一定的参考价值。

1. V js组成

ECMAScript(js语法),DOM(页面文档对象模型),BOM(浏览器对象模型)

2.Js输出语句

alert弹出警示框

console.Log(输出的);浏览器控制台打印输出信息

prompt()浏览器弹出输入框,用户可以输入

document.write() 在网页中输出内容

3.变量的命名规范

1 不能以数字开头

2 严格区分大小写

3 不能是关键字和保留字

4 变量要有意义

5 驼峰式命名法

4.Js数据类型分类类

1简单数据类型

其中包含number,string,Boolean,undefined,null

2复杂数据类型

其中包含Object

5.请写出转为字符串的方法?请写出转为数字型的方法?

toString 转为字符串

String 转为字符串(强制转换)

parseInt(string) 将字符串类型转换为数值型

parseFloat(string)讲字符串转换为浮点数值型

Number强制类型转换 强制转换为数值型

6.什么是标识符?规范是什么?

标识符:开发人员为变量,属性,函数,参数取的名字

规范:

1 是有字母,数字,下划线_,美元符$

2 不能以数字开头

3 不能是js里的关键字和保留字

4 驼峰式命名法

7.请写出逻辑运算符以及他们的运算规则

&& 逻辑与

两边都是true,才返回true,否则返回false

|| 逻辑或

两边只要有一个是true,就返回true,否则返回false

! 逻辑非

用来取一个布尔值相反的值

8.请写出If双分支语句语法以及三元运算符语法?

If双分支语句语法:

语法:

If(条件表达式)

//条件成立执行的代码   如果

else   

//条件不成立执行的代码  否则

三元运算符语法:

语法:表达式1 ? 表达式2 : 表达式3;

执行流程:如果表达式1返回true,执行表达式2,如果返回false,执行表达式3

9.请写出switch分支流程语法以及执行流程

语法:

Switch(表达式)

Case value1:

//表达式 等于 value1 时执行的代码

Break;

Case value2:

//表达式 等于 value2 时执行的代码

Break;

Case value3:

//表达式 等于 value3 时执行的代码

Break;

Default:

//表达式不等于任何一个value时执行的代码

执行流程:

Switch表达式的值会与结构中的case的值做比较

如果匹配,则与该case关联的代码块会被执行,遇到break时停止,整个switch语句结束。

如果都不匹配,则执行default里的代码

10.Switch语句和if else if 语句的区别

1 一般情况下,他们可以互相替换

2 switch … case 通常处理case比较确定值的情况,而if else语句相比更加灵活,常用于范围判断

3 switch语句进行条件判断4,效率更高。而if else语句有几种条件就要判断几种

4 当分支比较少时,if else语句的执行效率比switch高

5 当分支比较多的时候,switch的执行效率比较高,而且结构更清晰

11.循环的目的是什么?写出for循环的语法以及执行思路?

目的:可以重复执行某些代码

语法:

For(初始化变量;条件表达式;操作表达式)

循环体

执行思路:

初始化变量:初始化一个计数器,记录次数

条件表达式:确定每一次循环是否能被执行,如果结构是true就继续循环,否则就退出循环。

操作表达式:每次循环最后执行的代码,通常用来为计数器变量更新

12.写出while循环的语法以及执行思路?

语法:

While(条件表达式)

//循环体

执行思路:

1 先执行条件表达式,如果返回true,就执行循环体,如果返回false,就退出循环,执行后面的代码

2 执行循环体

3 循环体执行完毕,继续判断条件表达式,如果条件仍然为true,继续执行循环体,直到条件为false,整个循环过程才结束

13.写出do while循环的语法以及执行思路?

语法:

Do

循环体代码

while(条件表达式);

执行思路:

1 先执行一次循环体

2 在执行条件表达式,如果为true,继续执行循环体代码,如果为false,退出循环,执行下面的代码

14.arguments的使用

当不确定有多少参数传递的时候,用arguments来获取

arguments其实是当前函数的一个内置对象

arguments对象中存储了传递的所有实参

Arguments的展示形式是一个伪数组,可以遍历

伪数组有以下特点

1 具有length属性

2 按照索引的方式存储数据

3 不具有数组的push,pop等方法

15,return,break,continue的区别

return:不仅可以退出循环,还能返回return语句中的值,同时还可以结束当前函数体内的代码

break:结束当前的循环体(for,while,do while)

continue:结束本次循环,继续下一次循环(for,while,do while)

16, 全局变量和局部变量的区别

- 全局变量:在任何一个地方都可以使用,只有在浏览器关闭时才会被销毁,因此比较占内存

- 局部变量:只在函数内部使用,当其所在的代码块被执行时,会被初始化;当代码块运行结束后,就会被销毁,因此更节省内存空间

17,作用域链

只要是代码都一个作用域中,写在函数内部的局部作用域,未写在任何函数内部即在全局作用域中;如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域;根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链。

18,构造函数的注意事项

1. 构造函数约定首字母大写。

2. 函数内的属性和方法前面需要添加this,表示当前对象的属性和方法。

3. 构造函数中不需要 return 返回结果。

4. 当我们创建对象的时候,必须用 new 来调用构造函数。

19,new关键字的作用

1. 在构造函数代码开始执行之前,创建一个空对象;

2. 修改this的指向,把this指向创建出来的空对象;

3. 执行函数的代码

4. 在函数完成之后,返回this---即创建出来的对象

20,事件三要素

事件源(谁):触发事件的元素

事件类型(什么事件): 例如 click 点击事件

事件处理程序(做啥):事件触发后要执行的代码(函数形式),事件处理函数

21,常见的鼠标事件

onmouseover 移入、onclick 点击、onmouseout 移出、onmousemove 移动

onmouseup 抬起、onmousedown按下 onfocus 获取焦点 onblur 丧失焦点

22,innerText和innerhtml的区别

获取内容时的区别:

​ innerText会去除空格和换行,而innerHTML会保留空格和换行

设置内容时的区别:

innerText不会识别html,而innerHTML会识别

23,DOM元素的创建,增删改查和属性操作

创建:document.wirte、innerHTML、createElement

增加 appendChild insertBefore

删除 removeChild

改 修改元素的属性:src、href、title等

修改普通元素内容:innerHTML、innerText

修改表单元素:value、type、disabled、checked等

修改元素样式:style、className

DOM提供的API方法:getElementById、getElementsByTagName

H5新增的方法:querySelector、querySelectorAll

利用节点操作获取元素:

父 parentNode子 children 、

兄 弟 nextElementSibling\\previousElementSibling

属性操作

setAttribute:设置dom的属性值

getAttribute:得到dom的属性值

removeAttribute移除属性

24,DOM流的三个阶段以及使用方式和流程

三个阶段

捕获阶段

当前目标阶段

冒泡阶段

使用方式

事件:onclick 只能执行冒泡阶段 想要执行捕获阶段

可以使用addEventListener 如果把事件监听的第三个参数设置为true,将会是事件捕获

流程

事件捕获的一个过程,比如:document-->html-->body->father->son

冒泡阶段的过程,比如:son-->father->body->html->document

25,什么是事件对象

事件发生后,跟事件相关的一系列信息数据的集合都放到这个对象里面,这个对象就是事件对象

26,事件委托的原理和作用

原理:给父元素注册事件,利用事件冒泡,当子元素的事件触发,会冒泡到父元素,然后去控制相应的子元素。

作用:

我们只操作了一次 DOM ,提高了程序的性能。

动态新创建的子元素,也拥有事件。

27,什么是BOM,BOM的主要组成有哪些

BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window。

BOM 由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。

组成部分:

Document、location、navigation、screen、history

28,this的指向问题

全局作用域或者普通函数中this指向全局对象window(注意定时器里面的this指向window)

方法调用中谁调用this指向谁

构造函数中this指向构造函数的实例

29,声明定时器和销毁定时器,两者之间的区别是什么

声明定时器:setTimeout() 、setInterval()  

销毁定时器:clearTimeout()、clearInterval()

setTimeout()是延迟时间到了之后,就回去回调函数,只会调用1次,就结束这个定时器

setInterval() 每隔一段延迟时间,就会去调用回调函数,会持续的去调用

30,offset、client、scroll的用法

offset系列 经常用于获得元素位置 offsetLeft  offsetTop

client经常用于获取元素大小  clientWidth clientHeight

scroll 经常用于获取滚动距离 scrollTop  scrollLeft  

以上是关于原生js的一些题的主要内容,如果未能解决你的问题,请参考以下文章

求最简单的方法进行原生js 循环遍历树(json数据)

无限循环轮播图之JS部分(原生JS)

请问怎么学习react.js

经典面试题分析——原生JS如何实现事件委托

经典面试题分析——原生JS如何实现事件委托

题3:字符串转成驼峰