JavaScript入门保姆级教程 ——— 重难点详细解析(万字长文,建议收藏(1)

文章详细介绍了JavaScript中的函数特性、参数传递、内置数组对象Arguments的使用、类型判断、内置函数如parseInt和parseFloat,以及对象、正则表达式、事件模型和DOM操作的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现方法二:

test(function (i,j)){

return i+j;

}

  • 案例:将java中的排序放到前端使用

5、函数可以不按照规定传递参数

function add(i+j){

return i+j;

}

var result1=add(1); //1+undefined=NaN

var result1=add(1,2);//3

var result1=add(1,2,3,4);//3(只取前两位)

  • 注意:js中的函数可以不按照指定参数去传参,可能会出问题

1、内置数组对象Arguments[重点]

注意事项:

js里没有“方法重载”,调用函数时可以传入多余or少于形参数量的实参。

js将所有的实参默认保存在一个叫做arguments的数组里。

注:arguments(争吵)只能在函数内部使用

function add(i,j){

if(typeof i==“number”&&typeof=“number”){

if(arguments.length==2){

return i+j;

}else{

alert(“类型有误,请重新输入”);

}

}else{

alert(“参数个数有错,请重新输入”);

}

}

*arguments作用:增强函数的健壮性

2、内置函数

1.parseInt函数:把str转化成number整数

document.write(parseInt(“123”)+“
”);//123

document.write(parseInt(“1.23”)+“
”)//1

document.write(parseInt(“1a23”)+“
”);//1

document.write(parseInt(“a123”)+“


”);//NaN

2.parseFloat函数:把str转化成number小数

document.write(parseFloat(“3.14”)+“
”)//3.14

document.write(parseFloat(“a123”)+“
”);//NaN(not 啊number)

document.write(parseFloat(“1a.23”)+“
”)//1

四、对象

=======================================================================

1、对象类型

js语言是一门类(类似)的面向对象的编程语言,js没有类的概念

#1、在js里只有对象,没有类,任意两个对象都不一样

2.定义一个对象

语法:var obj={属性名:属性值,属性名:属性值,…};

#3.访问对象的属性

(1)访问一个属性:对象名 或者 对象名{“属性名”}

(2)遍历所有属性: 对象名.属性名 或者 对象名[“属性名”]

循环每一次执行,都会从对象中获取一个属性值,赋值给指定的变量名。

属性特点:

  1. 方法定义是,形参的类型不用写,返回值类型也不写。

  2. 方法是一个对象,如果定义名称相同的方法,会覆盖

  3. 在JS中,方法的调用只与方法的名称有关,和参数列表无关

  4. 在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际

2、自定义对象:自己定义的对象

(1)new Object();方式创建对象 【了解】
(2)同构系统与异构系统

异构系统通过XML,JSON,字符串进行多语言的通讯,因为这些都是规定好的,各个语言中使用都是一样的。例如JavaScript和Java通过Json进行数据交换,JavaScript利用eval()函数,而Java有jackson,json-lib等类库来进行帮忙解析。

不使用xml的原因:JSON 相对于XML要轻量,XML就比较笨重了,所以现在很多数据传输都在逐渐转为使用JSON来作为传输数据的方式。(2)同构系统与异构系统

  • 同构系统

  • 异构系统

在这里插入图片描述

(3)json形式对象创建

是一种数据交换格式,本质就是一个特殊形式的字符串 —— json串

特殊形式:{key:value , key1 : value1…}

*异常:Assiguments patterns must be on the left side of assignment

分配模式必须在分配模式的左侧,写:不要写=

*typeof运算符:获取变量的类型。

3、内置对象:js中准备好的

(1)数组【重点】

java中数组的特点:定长,元素类型相同

js中数组的特点:js里的数组长度不固定,可以任意扩展,数据可以是任意类型。

  • 相关属性方法

var arr2 = [1, 2, 3, 4]

//压栈(添加数组)

arr2.push();

//弹栈(将末尾元素移除)

arr2.pop();

1.数组对象.sort()—>对数组里的元素按照自然顺序升序排列

2.数组对象.push()—>在数组的末尾插入一个元素

3.数组对象.pop—>删除数组末尾的最后一个元素,且数组长度减1

4.数组对象.join(参数)–>将数组中的元素按照指定的分隔符拼接为字符串

5.delete 数组对象[下标]—>删除数组指定位置元素,且数组长度不变

(2)字符串
(3)日期
(4)Math

//随机数 返回0-1之间的随机数

let number = Math.random();

alert(number)

  1. 创建:
  • 特点:Math对象不用创建,直接使用。 Math.方法名();
  1. 方法:

random():返回 0 ~ 1 之间的随机数。 含0不含1

ceil(x):对数进行上舍入。

floor(x):对数进行下舍入。

round(x):把数四舍五入为最接近的整数。

  1. 属性:

PI

  1. RegExp:正则表达式对象

  2. 正则表达式:定义字符串的组成规则。

  3. 单个字符:[]

如: [a] [ab] [a-zA-Z0-9_]

  • 特殊符号代表特殊含义的单个字符:

\d:单个数字字符 [0-9]

\w:单个单词字符[a-zA-Z0-9_]

  1. 量词符号:

?:表示出现0次或1次

*:表示出现0次或多次

+:出现1次或多次

{m,n}:表示 m<= 数量 <= n

  • m如果缺省: {,n}:最多n次

  • n如果缺省:{m,} 最少m次

  1. 开始结束符号
  • ^:开始

  • $:结束

  1. 正则对象:

  2. 创建

  3. var reg = new RegExp(“正则表达式”);

  4. var reg = /正则表达式/;

  5. 方法

  6. test(参数):验证指定的字符串是否符合正则定义的规范

(5)RegExp:正则表达式对象
  1. 正则表达式:定义字符串的组成规则。

  2. 单个字符:[]

如: [a] [ab] [a-zA-Z0-9_]

  • 特殊符号代表特殊含义的单个字符:

\d:单个数字字符 [0-9]

\w:单个单词字符[a-zA-Z0-9_]

  1. 量词符号:

?:表示出现0次或1次

*:表示出现0次或多次

+:出现1次或多次

{m,n}:表示 m<= 数量 <= n

  • m如果缺省: {,n}:最多n次

  • n如果缺省:{m,} 最少m次

  1. 开始结束符号
  • ^:开始

  • $:结束

  1. 正则对象:

  2. 创建

  3. var reg = new RegExp(“正则表达式”);

  4. var reg = /正则表达式/;

  5. 方法

  6. test(参数):验证指定的字符串是否符合正则定义的规范

(6)Global
  1. 特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。 方法名();

  2. 方法:

encodeURI():url编码

decodeURI():url解码

encodeURIComponent():url编码,编码的字符更多

decodeURIComponent():url解码

parseInt():将字符串转为数字

  • 逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number

isNaN():判断一个值是否是NaN

  • NaN六亲不认,连自己都不认。NaN参与的==比较全部问false

eval():讲 JavaScript 字符串,并把它作为脚本代码来执行。

五、事件[重点]

=============================================================================

js代码靠用户触发某些事件,触发js程序运行,当网页里的标签产生浏览器能够捕获的特定事件时,触发js代码运行。

1、事件模型的三要素

1.事件源:发生事件的事务/对象 通常为HTML页面的标签 对象

2.事件的属性:发生事件的性质(动作) 用户的某个操作(如:单击、双击 等)

3.监听器:事件发生后的处理 通常在函数 中定义处理程序

案例:点击按钮弹窗提示

事件源头:按钮标签

事件属性:单机

事件监听:弹窗提示

事件示例图:

2、为html标签注册事件的方式

<标签名 属性=“” 事件名称=“监听器”>

如:

3、事件属性

1.鼠标相关

onclick 单击事件 ***** **

** ondbclick 双击事件 ***

** onmouseover 移入鼠标 ***

** onmouseout 移出鼠标 *****

onmousemove 鼠标移动*

onmousedown 鼠标按下

onmouseup 鼠标松开

2.键盘相关

onKeyDown 按键按下*

onKeyUp 按键抬起*

3.body相关事件

onload //页面加载完毕后触发

onunload 窗口离开时触发(刷新,返回,前进,主页。。。。)

onscroll 页面滚动

onresize 缩放页面

4.form表单控件相关事件***

onblur 当前对象失去焦点

onchange 当前元素失去焦点,并且值改变时(监听value属性值的修改)

onfocus 当前对象获得焦点时

onsubmit 表单提交时(验证表单格式是否正确)

onreset 重置按钮被点击。

onsubmit例:

function xxx(){

if(…){

alert(“错误消息”);

return false;

}

return true;

}

<form…οnsubmit=“return xxx()”>

4、注意事项

1.事件冒泡:发生在内部元素的事件默认会向外部元素扩散

取消事件冒泡===event.cancelBubble=true;

event–代表监听的事件对象

event.clientX–事件产生的横坐标

event.clientY–事件产生的纵坐标

2.通过事件监听可以取消某些标签的默认行为[存在浏览器差异 IE不生效]

超链接标签–》

表单标签–》

文末

👉在此,鸣谢:刘浩老师讲解

📌 作者:王恒杰

📃 更新: 2021.10.18

❌ 勘误: 无
📜 声明: 由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!
🍅 欢迎点赞 👍 收藏 ⭐留言 📝

最后

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值