前端基础3-1——JavaScript

目录

  • 什么是JavaScript
  • 快速入门
    • 引入JavaScript
  • 数据类型和基本语法入门
    • 1.变量
    • 2.number
    • 3.字符串
    • 4.布尔值
    • 5.逻辑运算
    • 6.比较运算符
    • 7.浮点数
    • 8.数组
    • 9.对象
    • 10.流程控制
    • 11.Map和Set集合
  • 严格检查模式use strict
  • 函数
    • 定义函数
    • 变量的作用域
    • 方法

什么是JavaScript

概述
JavaScript是一门世界上最流行的脚本语言。
一个合格的后端人员,必须精通JavaScript

历史

ECMAScript它可以理解为JavaScript的一个标准,最新版本已经到ES6版本。
但是大部分浏览器还只停留在支持ES5代码上。
开发环境与线上环境容易出现版本不一致的情况。

快速入门

引入JavaScript

1.内部标签

 <script> //....<script>

2、外部引入
hello.js

 aert("hello,world");

test.html

  <!--外部引入  注意:script必须成对出现--><script src="hello.js"></script><!--不用显示定义type,也默认就是javaScript--><script type="text/javascript"></script>

数据类型和基本语法入门

注释格式跟java一样
demo:

     <!--JavaScript严格区分大小写--><script>// 1. 定义变量  var score = 1 ;//alert(num)// 2. 条件控制if (score > 60 && score < 70){alert("60~70");}else if(score > 70 && score < 80){alert("70~80");}else{alert("other")}</script>

浏览器常用调试功能(F12调出):
在这里插入图片描述

1.变量

命名规则:

允许大写、允许$或_符号开头、允许中文变量名
不允许数字开头

 var a

2.number

JS不区分小数和整数,Number

 123//整数123123.1//浮点数123.11.123e3//科学计数法-99//负数NaN //not a numberInfinity // 表示无限大

3.字符串

正常字符串使用单引号,或者双引号包裹 ‘abc’ “abc”

转义字符

 \'\n\t\u4e2d    \u##### Unicode字符 ​\x41    	ASCAII字符

多行字符串编写

 //	~键
var msg =`helloworld你好呀nihao`

模板字符串

 //	~键let name = 'Tom';let age = 3;var msg = `你好,${name}`

字符串长度

str.length

字符串的可变性,不可变
在这里插入图片描述

大小写转换

//注意,这里是方法,不是属性了
student.toUpperCase();
student.toLowerCase();

indexof()
返回某字符在字符串所在位置的索引
substring

[)区间为左闭右开
student.substring(1)//从第一个字符串截取到最后一个字符串
student.substring(1,3)//[1,3)

4.布尔值

true,false

5.逻辑运算

&& 两个都为真,结果为真
|| 一个为真,结果为真
! 真即假,假即真

6.比较运算符

 = 赋值== 等于(类型不一样,值一样,也会判断为true) 例如1"1"==的话为true=== 绝对等于(类型一样,值一样,结果为true

这是一个JS的缺陷,坚持不要使用 == 比较

注意:

  • NaN === NaN,这个与所有的数值都不相等,包括自己
  • 只能通过isNaN(NaN)来判断这个数是否是NaN

7.浮点数

 console.log((1/3) === (1-2/3))    //false
console.log(1/3)
//0.3333333333333333console.log(1-2/3)
//0.33333333333333337

尽量避免使用浮点数进行运算,存在精度问题!

 Math.abs(1/3-(1-2/3))<0.00000001	//true,可以这样判断是否相等,误差<0.000...001足够认为两者相等

8.数组

Java的数组必须是相同类型的对象
而JS中不需要这样
Array可以包含任意的数据类型

 //保证代码的可读性,尽量使用[]var arr = [1,2,3,4,5,'hello',null,true];//第二种定义方法new Array(1,2,3,4,5,'hello');

取数组下标:如果越界了,就会报undefined

长度

arr.length

注意:假如给arr.lennth赋值,数组大小就会发生变化~,如果赋值过小,元素就会丢失

indexOf,
通过元素获得下标索引

arr.indexOf(2)
1

字符串的"1"和数字 1 是不同的

slice()
截取Array的一部分,返回的一个新数组,类似于String中substring

push(),pop()尾部

push:压入到尾部
pop:弹出尾部的一个元素

unshift(),shift() 头部

unshift:压入到头部
shift:弹出头部的一个元素

排序sort()

(3)["B","C","A"]
arr.sort()
(3)["A","B","C"]

元素反转reverse()

(3)["A","B","C"]
arr.reverse()
(3)["C","B","A"]

concat()
在这里插入图片描述

注意:concat()并没有修改数组,只是会返回一个新的数组

连接符join
在这里插入图片描述

打印拼接数组,使用特定的字符串连接

多维数组

在这里插入图片描述

数组:存储数据(如何存,如何取,方法都可以自己实现!)

9.对象

若干个键值对

var 对象名 = {属性名:属性值,属性名:属性值,属性名:属性值
}
//定义了一个person对象,它有四个属性
var person = {name:"Tom",age:3,email:"123456798@QQ.com",score:66
}

Js中对象,{…}表示一个对象,建制对描述属性xxx:xxx,多个属性之间用逗号隔开,最后一个属性不加逗号! JavaScript中的所有的键都是字符串,值是任意对象!

取对象值

 person.name
//"Tom"person.age
//3

对象赋值
在这里插入图片描述

使用一个不存在的对象属性,不会报错! undefined
在这里插入图片描述

动态地删减属性,通过delete删除对象的属性
在这里插入图片描述
动态地添加,直接给新的属性添加值即可
在这里插入图片描述
xxx in xxx判断属性值是否在这个对象中
在这里插入图片描述

hasOwnProperty()判断一个属性是否是这个对象自身拥有的
在这里插入图片描述

10.流程控制

if判断
在这里插入图片描述

while循环
要避免程序死循环
在这里插入图片描述

for循环
在这里插入图片描述

forEach循环
ES5.1特性

在这里插入图片描述

for…in…
for x in obj:x是打出下标来
在这里插入图片描述

11.Map和Set集合

Map
在这里插入图片描述

Set:无序不重复的集合
在这里插入图片描述
遍历Map和Set
通过for…of…遍历(for x of obj:x是打出值来,而for x in obj的x是打出下标来)
在这里插入图片描述
在这里插入图片描述

严格检查模式use strict

<!--前提:IDEA需要设置支持ES6语法'use strict';严格检查模式,预防JavaScript的随意性导致产生的一些问题'use strict'必须写在JavaScript的第一行!局部变量建议都使用let去定义~--><script>'use strict';//局部变量let i=1;//ES6 let</script>

函数

定义函数

定义方式一
绝对值函数
在这里插入图片描述

一旦执行到return代表函数结束,返回结果!
如果没有执行return,函数执行完也会返回结果,结果就是undefined

定义方式二
在这里插入图片描述

function(x){…}这是一个匿名函数。但是可以吧结果赋值给abs,通过abs就可以调用函数!
方式一和方式二等价!

调用函数

abs(10)//10
abs(-10) //10

参数问题:javaScript可以传任意个参数,也可以不传递参数~
参数进来是否存在问题?
假设不存在参数,如何规避?
在这里插入图片描述

arguments
arguments是一个JS免费赠送的关键字;
代表,传递进来的所有参数,是一个数组!
在这里插入图片描述

问题:arguments包含所有的参数,我们有时候想使用多余的参数来进行附加操作。需要排除已有参数~

rest
以前:
在这里插入图片描述

ES6引入的新特性,获取除了已经定义的参数之外的所有参数~…
在这里插入图片描述

rest参数只能写在最后面,必须用…标识。

变量的作用域

在javascript中,var定义变量实际是有作用于的。
假设在函数体重声明,则在函数体外不可以使用~(闭包)
在这里插入图片描述

如果两个函数使用了相同的变量名,只要在函数内部就不冲突
在这里插入图片描述

内部函数可以访问外部函数的成员,反之则不行
在这里插入图片描述

假设,内部函数变量和外部函数变量,重名!
在这里插入图片描述

假设在JavaScript中,函数查找变量从自身函数开始~, 由“内”向“外”查找,假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数的变量。

提升变量的作用域

在这里插入图片描述

结果:x undefined
说明:js执行引擎,自动提升了y的声明,但是不会提升变量y的赋值;
在这里插入图片描述

这个是在javascript建立之初就存在的特性。 养成规范:所有 的变量定义都放在函数的头部,不要乱放,便于代码维护;
在这里插入图片描述

全局变量

在这里插入图片描述

全局对象window
在这里插入图片描述

alert() 这个函数本身也是一个window的变量;
在这里插入图片描述

javascript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域都没有找到,就会报错 Refrence

规范

由于我们的所有变量都会绑定到window上,。如果不同的js文件,使用了相同的全局变量,就会产生冲突—>如何减少这样的冲突?

唯一全局变量

在这里插入图片描述

把自己的代码全部放入自己定义的唯一空间名字中,降低全局命名冲突问题~
jQuery中就是使用的该方法:jQuery.name,简便写法:$()

局部作用域

在这里插入图片描述

ES6的let关键字,解决了局部作用域冲突的问题!

let关键字
在这里插入图片描述

建议大家都用let去定义局部作用域的变量;

常量

在ES6之前,怎么定义常量:只有用全部大写字母命名的变量就是常量;建议不要修改这样的值。
在这里插入图片描述

在ES6引入了

常量关键字 const
在这里插入图片描述

方法

定义方法

方法就是把函数放在对象的里面,对象只有两个东西:属性和方法
在这里插入图片描述

this.代表什么?拆开上main的代码看看
在这里插入图片描述

this是无法指向的,是默认指向调用它的那个对象的;

apply

在js中可以控制this指向
在这里插入图片描述
this指向了kuangshen,参数为空

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[剑指offer][JAVA]面试题第[17]题[打印从1到最大的n位整数][大整数][递归回溯]

【问题描述】[中等] 输入数字 n&#xff0c;按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3&#xff0c;则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n 1 输出: [1,2,3,4,5,6,7,8,9]说明&#xff1a;用返回一个整数列表来代替打印 n 为正整数【解答思路】…

html:(40):块级元素和内联块级元素

1.下表列出了内联元素和块级元素的主要区别 html中内联元素和块级元素的区别 块级元素 行内元素 独占一行,默认情况下&#xff0c;其宽度自动填满其父元素宽度 相邻的行内元素会排列在同一行里&#xff0c;直到一行排不下&#xff0c;才会换行&#xff0c;其宽度随元素的内…

Django中提供了6种缓存方式

开发调试内存文件数据库Memcache缓存&#xff08;python-memcached模块&#xff09;Memcache缓存&#xff08;pylibmc模块&#xff09;1. 开发调试 12345678910111213141516171819202122232425262728293031323334353637383940# 此为开始调试用&#xff0c;实际内部不做任何操作…

HDU-6180 Schedule

题意 给n个工作的开始时间和结束时间 每个工作需要用机器来完成 让我们给这n个工作规划机器 规划出尽可能少机器数目 以及计算最少的机器时间(机器时间为机器使用的最终结束时间减去开始时间)分析 这道题其实就是一个工作的开始结束形成了一个线段 让我们求多个线段不交叉不重…

数字图像处理技术的应 用领域

数字图像处理技术的应 用领域 图像处理技术的主要应用领域有&#xff1a; 生物医学、遥感技术、工业生产、军事技术、 通信技术、侦缉破案、气象预报、宇宙探索、考 古等&#xff0c;已经遍布国民经济的各个领域。 发展历史 20世纪20年代&#xff1a;报纸业 Bartlane电缆图…

前端基础3-2——JavaScript

目录内部对象DateJSONAJAX面向对象编程操作BOM对象&#xff08;重点&#xff09;操作DOM对象&#xff08;重点&#xff09;操作表单formjQuery如何巩固前端基础内部对象 标准对象 Date 基本使用 转换 JSON JSON是什么 在javascript中&#xff0c;一切皆为对象&#…

ltp makefile 解析

困惑于 /include/mk/automake.mk中出现了第一个目标 而makefile却任然将all当做最终目标 测试了一番后发觉&#xff1a; ifeq ($(MAKE_3_80_COMPAT),1)# Trick make 3.80 into thinking that the default goal is all..PHONY: defaultdefault: allelse #pick this.DEFAULT_GOA…

数字图像处理(拓展)

1&#xff0e;数字图像处理及特点 数字图像处理又称为计算机图像处理&#xff0c;它是指将图像信号转换成数字信号并利用计算机 对其进行处理的过程&#xff0c;以提高图像的实用性&#xff0c;从而达到人们所要求的预期结果。 数字图像处 理还有以下特点&#xff1a; ① 处理…

HDU-5532Almost Sorted Array LIS问题

题意 就是检查这个序列是否删除一个元素就能变成非严格的有序序列 表面上就是一个卡条件检查数组的问题 分析&#xff1a; 在向量中upperbound插入上界 这样能够使数组里的数列长度尽可能大 因为 我们是在不断用小数替换数列中的数 大的数直接拼接到最后 code #include…

文件和结构体

LITTLESUN本来是在学队列啊&#xff0c;在手动模拟队列的地方发现了结构体这个小怪&#xff0c;为了能赶紧打队列大BOSS就赶紧跑过来填下文件和结构体的坑鸭&#xff01; 转载于:https://www.cnblogs.com/LITTLESUNwl/p/10435877.html

电磁波谱与可见光谱

电磁波谱与可见光谱 电磁辐射波 在实际的图像处理应用中&#xff0c;最主要的图像来源于电磁 辐射成像。 电磁辐射波包括无线电波、微波、红外线、可见光、 紫外线、X射线、γ射线。 电磁辐射波的波谱范围很广&#xff0c;波长最长的是无线电波 为3102m&#xff0c;其波长是…

[Leedcode][JAVA][第9题][回文数][数学法]

【问题描述】[简单] 判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。示例 1:输入: 121 输出: true 示例 2:输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。…

Weak Pair HDU - 5877 树状数组+离散化+DFS遍历

题意 给我们一颗有根有向树 以及每个点得权值a[1]~a[n] 需要我们求出在这颗树种有多少对满足以下两个条件的pair &#xff08;1&#xff09;u是v的祖先节点 &#xff08;2&#xff09;a[u]*a[v]< k N<1e5 a[i]<1e9 k<1e18 分析 由于需要在树中找符合要求的对…

【模板】最新空web.xml模板

<?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://xmlns.jcp.org/xml/ns/javaeehttp://x…

人眼的视觉特性

人眼的视觉特性 视觉系统基本构造 视觉过程 包括&#xff1a;光学过程&#xff1b;化学过程&#xff1b;神经处理过程 光学过程 物体在视网膜上成像 整体视觉过程 亮度适应能力 亮度适应能力 明亮较暗现象&#xff1f; 逐渐能够看清物体暗光适应(20~30s) 较暗明亮现象…

微信小程序测试的策略和注意事项

一、测试前准备&#xff08;环境搭建&#xff09; 1.前端页面 微信Web开发者工具安装、授权测试用的微信号可预览和调试小程序...可参考此文&#xff1a; 微信Web开发者工具-下载、安装和使用图解 2.管理后台 配置内网测试服务器环境&#xff0c;通过PC端Web站点管理小程序前端…

【解决问题】idea启动本地tomcat访问localhost:8080报404错误

把tomcat安装目录下webapp下的的ROOT文件夹配置到idea中 并且将/ROOT修改application context为 /

[Leedcode][第十题][剑指offer]面试题第[19]题[正则表达式][动态规划][递归][JAVA]

【问题描述】[困难] 请实现一个函数用来匹配包含. 和*的正则表达式。模式中的字符.表示任意一个字符&#xff0c;而*表示它前面的字符可以出现任意次&#xff08;含0次&#xff09;。在本题中&#xff0c;匹配是指字符串的所有字符匹配整个模式。例如&#xff0c;字符串"…

图像的采样和量化

图像的采样和量化 图像成像模型 图像的采样和量化 图像数字化 •将代表图像的连续(模拟)信号转换为离散(数字) 信号的过程称为图像数字化 •步骤&#xff1a;采样和量化 •主要技术 成像&#xff1a;光信息&#xff0d;>电信号 模数转换&#xff08;A/DConverter&…

Elegant Construction HDU-5813 构造

- 题意 给出我们从1-n城市的点能直接&#xff08;或间接&#xff09;到达的城市的数量作为这个点的权值 让我们判断并构造一个单向图 使得这个图完全契合给出的数据 special judge 任意一组结果就可以题目中给出 图中无环无回路- 分析 刚看到根据联通数目构造图 哇 这怎么做 好…