JavaScript相关知识点(1)
1. JS的基本数据类型有哪些?引用类型有哪些?
数据类型:Undefined Null String Number Boolean
引用类型:String Object Date Function Number
2. 什么是冒泡,什么是捕获,什么是事件流?
冒泡:事件由子元素传递到父元素的过程。
捕获:事件由父元素传递到子元素的过程
事件流:当HTML产生一个事件时,该事件会在元素节点与根节点之间的路径传播,路径所经过都会收到该事件,这个传播的过程叫做DOM事件流。
3. 写出continue和break的区别,描述如何跳出指定的循环?
continue:跳过本次循环,接着开始下一次循环;只能在循环语句中使用,fou,while和do...while语句中使用。
break:结束本次循环以及本次之后的循环;只能在循环体内和switch语句中使用。
- 列举获取DOM元素的方法
(1).根据签名进行获取,
(2).通过name属性值获取,
(3).通过id值获取,
(4).通过类名获取,
(5).获取一个子元素,通过这个子元素找到其父元素,
(6).获取子元素节点,
- 什么是未声明和未定义的变量?
未声明的变量是程序中不存在且未声明的变量,如果程序尝试读取未声明变量的值,则会遇到运行时错误。
未定义的变量是在程序中声明但尚未给出任何值的变量,如果程序尝试读取未定义变量的值,则返回未定义的值。
- 写出常用的分支结构和循环结构,写出详细结构?
分支结构:在顺序结构基础上,根据条件进行选择执行方向(根据条件的成立与否,选择执行方向)。
循环结构:在顺序结构基础上,根据条件进行多次执行相同或相似的代码
例:
if分支结构:
语句1;
if(条件表达式){
代码块//条件成立时,执行的逻辑
}
语句2;
注释:执行逻辑:执行完语句1后,碰到if,一定会执行条件表达式,结果为true就执行代码块,然后执行语句2;如果结果为false,则跳过代码块直接执行语句2。
if(条件表达式){
代码块1//条件成立时,执行此代码快
}
else{
代码块2//条件不成立时,执行此代码快
}
注释:执行逻辑:当程序执行到if时一定会执行条件表达式进行判断;结果为true就执行代码块1;结果为false,则跳过代码块1,执行代码块2.
- 描述自己最近遇见的js错误以及出现的原因,怎么解决,最少写出三个错误?
(1).引入路径错误-路径手敲的-需要Enter出来。
(2).代码不规范错误-缺少标点符号-注意代码规范性。
(3).代码书写错误-代码不熟悉-多学多练。
- 列出几个数组常用的方法并解释,以及字符串常用的方法并解释
数组:
(1).shift()方法:把数组的第一个元素删除,并返回第一个元素的值
(2).pop()方法:用于删除并返回数组的最后一个元素(删除元素),如果数组为空则返回undefined,把数组长度减一。
字符串:(字符串的平常的方法,返回的是新的字符串,并不是在字符串上进行修改)
(1).replace:指定字符串进行替换。
(2).charAt:调用方法,返回指定下标的字符串。
- 描述JavaScript中的匿名函数?
匿名函数就是没有实际名字的函数
例:
当我们声明一个普通函数时:
function h(){
console.log(“hello”);
}
将函数的名字h去掉,即为匿名函数,但是此时单独运行一个匿名函数由于不符合语法要求会报错,解决办法是给这个匿名函数整体加一个括号(把这个匿名函数整体括起来);如果需要执行匿名函数,则在匿名函数后面加上一个括号即可;如果需要传值,直接将参数写到括号内即可。
- 请简述 AJAX 及基本步骤?(原生XHR)
AJAX请求的五个步骤:
(1).建立XMLHttpRequest对象;
(2).设置回调函数;
(3).配置请求信息,(如open,get方法),使用open方法与服务器建立链接;
(4).向服务器发送数据,
(5).在回调函数中针对不同的响应状态进行处理;
- 同步和异步
同步:两个进程的运行是相关的,其中一个进程要阻塞等待另外一个进程的运行。
异步:两个进程毫不相关(不用互相等待),自己运行自己的。
- GET和POST
(1).GET产生的URL地址可以被BookMark,而POST不可以。
(2).GET请求会被浏览器主动cache,而POST不会,除非手动设置。
(3).GET请求只能进行url编码,而POST支持多种编程方式。
(4).GET参数通过URL传递,POST放在Request body中。
(5).GET比POST更不安全,因为参数直接暴露在URL上,所有不能用来传递敏感信息。
- new 操作符具体干了什么呢?
new通过Person创建出来的实例可以访问到构造函数中的属性
- 手写一个冒泡排序
int[] nums = {98,45,40,23,100,54,78};
System.out.println("排序前的数组:");
for (int i:nums) {
System.out.print(i+"\t");
}
//冒泡排序
for (int i=0;i<nums.length-1;i++){
for (int j=0;j<nums.length-1-i;j++){
int temp = 0;
if (nums[j]>nums[j+1]){
temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
System.out.println();
System.out.println("排序之后的数组:");
for (int i:nums) {
System.out.print(i+"\t");
}
- 谈模块化开发的理解?
是将一个大型的软件系统划分成多个独立的模块,每个模块都有自己的功能和接口,并且能够与其他模块独立地工作。
- 什么是设计模式?请简述几个你知道的设计模式(工厂设计模式,观察者设计模式)
设计模型就是经过前任无数次的实践总结出的,设计过程中可以反复使用的,可以解决特定问题的设计方式。
模式:
创建型模式:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
结构型模式:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
行为型模式:策略模式,模板方式模式,观察者模式,迭代子模式,责任链模式,命令式模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式。
- 面向对象理解,原型,原型链理解
面向对象:通过代码抽象,进而描述单个种类物体的方式
原型:JS声明构造函数(用来实例化对象的函数)时,会在内存中创建一个对应的对象,这个对象就是原函数的原型。构造函数默认有一个prototype属性,prototype的值指向函数的原型。同时原型中也有一个constructor属性,constructor的值指向函数对象。通过构造函数实例化出来的对象,并不具有prototype属性,其默认有一个_proto_属性,_proto_的值指向构造函数的原型。在原型对象上添加或修改的属性,在所有实例化出的对象上都可共享。
原型的作用:
(1).数据共享 节约内存空间
(2).实现继承
原型链:当在实例化的对象中访问一个属性时,首先会在该对象内部(自身属性)寻找,如找不到,则会向其_proto_指向的原型中寻找,如仍找不到,则继续向原型中_proto_指向的上级原型中寻找,直至找到Object.prototype._proto_为止(值为null),这种链状过程即为原型链。
原型链的作用:
查找对象的属性(方法)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话