JavaScript集训笔记1-25

JavaScript

JS简史

计算机语言:计算机语言指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。为了使电子计算机进行各种工作,就需要一套用于编写计算机程序的数字,字符和语法规范,由这些字符和语法规则组成计算机各种指令。这些便是计算机能接受的语言。

分类:第一代计算机语言:机器语言 第二代计算机语言:汇编语言 第三代计算机语言:高级语言 C,Fortran,Basic,Pascal,C++,Java,Python,C#

JavaScript发展历史:1. 1994网景公司(Netscape)发布navigator浏览器 LiveScript-JavaScript-ECMAscript。 2. 1995SUN公司将Oak语言改名Java。 3. 34岁系统程序员Brenda Eich,1995年4月网景公司使用10天时间设计JavaScript。 4. 借鉴C语言的基本语法 借鉴Java语言的数据类型和内存管理 借鉴scheme语言将函数提升到“第一等公民”(first class)的地位 借鉴self语言,使用基于原型(prototype)的继承机制

JavaScript的组成:

浏览器内核JS引擎
IETrident内核JScript
FirefoxGecko内核(俗称Firefox内核)FireFox3.0及其以下:SpideMonkey FireFox3.1及其以上:TraceMonkey
Google chromechrome chromium内核 Webkit内核-Blink内核V8
SafairWebkit内核Safari3.1及其以下:JavaScriptCore Safari4.0:SquirrelFish
OperaPresto内核-Webkit内核-Blink内核opera9.5及其以上:Futhark

JavaScript的组成:ECMAScript:类型,语法,语句,关键字,保留字,操作符,对象。【核心语言功能】 文档对象(DOM):多节点结构(删除,添加,替换,修改)【操作网页内容】 浏览器对象模型(BOM):操作,访问浏览器窗口/框架【与浏览器交互】

ECMASCRIPT: 定义了javascript的语法规范,描述了语言的基本语法和数据类型
BOM (Browser Object Model): 浏览器对象模型 有一套成熟的可以操作浏览器的 API,通过 BOM 可以操作浏览器。比如: 弹出框、浏览器跳转、获取分辨率等
DOM (Document Object Model): 文档对象模型 有一套成熟的可以操作页面元素的 API,通过 DOM 可以操作页面中的元素。比如: 增加个 div,减少个 div,给 div 换个位置等
总结: JS 就是通过固定的语法去操作 浏览器 和 标签结构 来实现网页上的各种效果

JavaScript能干什么:1. 常见的网页效果【表单验证,轮播图】 2.与H5配合实现游戏 3.实现应用级别的程序 4.实现图表统计效果 5.js可以实现人工智能【面部识别】 6.后端开发,app开发,桌面端开发…

JS之hello

<script>	
alert("hello world")	
document.write("hello world")
console.log("hello world")
</script>
//可以注释

js的书写位置

JavaScript代码的书写位置:和 css一样, js也可以有多种方式书写在页面上让其生效 js也有多种方式书写,分为行内式, 内嵌式,外链式

行内式:
<div onclick="alert"('hello world')>点我</div>
<a href="javascript:alert('hello world')">点我</a>
内嵌式:
<script type=“text/javascript”>alert('我是一个弹出层')</script>
script标签可以放在head和body里面
外链式js代码只要引入了html页面,就会在页面打开的时候直接触发
新建一个.js后缀的文件,在文件内书写js代码,把写好的js文件引入html页面
外链式(推荐):
<script src="地址"></script>
通过 script 标签的 src 属性,把写好的 js 文件引入页面
一个页面可以引入多个 js 文件

JS的注释

学习一个语言,先学习一个语言的注释,因为注释是给自己看的,也是给开发人员看的 写好一个注释,有利于阅读代码

单行注释:一般就是用来描述下面一行代码的作用 可以直接写两个 /,也可以按 ctrl + /
多行注释:一般用来写一大段话,或者注释一段代码 可以直接写 /**/然后在两个星号中间写注释 各个编辑器的快捷键不一样,vscode 是 alt + shift + a

JS的变量

变量指的是在程序中保存数据的一个容器
变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据
也就是说,向内存中存储了一个数据,然后要给这个数据起一个名字,为了是以后再次找到他
语法: var 变量名 = 值

// 定义一个变量
var num;
// 给一个变量赋值
num = 100;
// 定义一个变量的同时给其赋值
var num2 = 200;
注意:
1. 一个变量名只能存储一个值
2. 当再次给一个变量赋值的时候,前面一次的值就没有了
3. 变量名称区分大小写(JS 严格区分大小写)

变量的命名规则和命名规范:

必须遵守的,不遵守就是错:

1.一个变量名称可以由 数字字母英文下划线(_)美元符号($) 组成严格区分大小写

2.不能由数字开头

3.不能是 保留字 或者 关键字

4.不要出现空格

建议遵守的(开发者默认),不遵守不会报错:

1.变量名尽量有意义(语义化)

2.遵循驼峰命名规则,由多个单词组成的时候,从第二个单词开始首字母大写

3.不要使用中文

数据类型

是指存储在内存中的数据的类型 通常分为两大类基本数据类型和复杂数据类型

基本数据类型:

数值类型(number):一切数字都是数值类型(包括二进制,十进制,十六进制等)NaN(not a number),一个非数字

字符串类型(string):被引号包裹的所有内容(可以是单引号也可以是双引号)

布尔类型(boolean):只有两个(true或者 false)

null类型(null):只有一个,就是 null,表示空的意思

undefined类型(undefined):只有一个,就是undefined,表示没有值的意思

判断数据类型:使用 typeof关键字来进行判断

第一种使用方式
var n = 100;
console.log(typeof n);

第二种使用方式
var s = 'abcdefg';
console.log(typeof(s));

数据类型转换:
数据类型之间的转换,比如数字转成字符串,字符串转成布尔,布尔转成数字等

其他数据类型转成数值:

1.Number(变量)
可以把一个变量强制转换成数值类型
可以转换小数,会保留小数
可以转换布尔值
遇到不可转换的都会返回 NaN

2.parseInt(变量)
从第一位开始检查,是数字就转换,知道一个不是数字的内容
开头就不是数字,那么直接返回 NaN
不认识小数点,只能保留整数

3.parseFloat(变量)
从第一位开始检查,是数字就转换,知道一个不是数字的内容
开头就不是数字,那么直接返回 NaN
认识一次小数点

4.除了加法以外的数学运算
运算符两边都是可运算数字才行
如果运算符任何一遍不是一个可运算数字,那么就会返回 NaN
加法不可以用

其他数据类型转成字符串:

1.变量.toString()
有一些数据类型不能使用 toString() 方法,比如 undefinednull

2.String(变量)
所有数据类型都可以

3.使用加法运算
在 JS 里面,+ 由两个含义
字符串拼接: 只要 + 任意一边是字符串,就会进行字符串拼接
加法运算:只有 + 两边都是数字的时候,才会进行数学运算

其他数据类型转成布尔

1.Boolean(变量)
在 js 中,只有 ''0nullundefinedNaN,这些是 false
其余都是 true

运算符

运算符就是在代码里面进行运算的时候使用的符号,不光只是数学运算,在 js 里面还有很多的运算方式
数学运算符:
1.+
只有符号两边都是数字的时候才会进行加法运算
只要符号任意一边是字符串类型,就会进行字符串拼接

2.-
会执行减法运算
会自动把两边都转换成数字进行运算

3.*
会执行乘法运算
会自动把两边都转换成数字进行运算

4./
会执行除法运算
会自动把两边都转换成数字进行运算

5.%
会执行取余运算
会自动把两边都转换成数字进行运算

赋值运算符:

1.=
就是把 = 右边的赋值给等号左边的变量名
var num = 100
就是把 100 赋值给 num 变量
那么 num 变量的值就是 100

2.+=

var a = 10;
a += 10;
console.log(a); //=> 20
//a += 10 等价于 a = a + 10

3.-=

var a = 10;

a -= 10;
console.log(a); //=> 0
a -= 10等价于 a = a - 10

4.*=

var a = 10;
a *= 10;
console.log(a); //=> 100
a *= 10等价于 a = a * 10

5./+

var a = 10;
a /= 10;
console.log(a); //=> 1
a /= 10`等价于 a = a / 10

5.%=

var a = 10;
a %= 10;
console.log(a); //=> 0
a %= 10 等价于 a = a % 10

比较运算符:
1.==
比较符号两边的值是否相等,不管数据类型
1 == '1' 两个的值是一样的,所以得到 true

2.===
比较符号两边的值和数据类型是否都相等
1 === '1' 两个值虽然一样,但是因为数据类型不一样,所以得到 false

3.!=
比较符号两边的值是否不等
1 != '1' 因为两边的值是相等的,所以比较他们不等的时候得到 false

4.!==
比较符号两边的数据类型和值是否不等
1 !== '1' 因为两边的数据类型确实不一样,所以得到 true

5.>=
比较左边的值是否大于或等于右边的值
1 >= 1 结果是 true
1 >= 0 结果是 true
1 >= 2 结果是 false

6.<=
比较左边的值是否小于或等于右边的值
1 <= 2 结果是 true
1 <= 1 结果是 true
1 <= 0 结果是 false

7.>
比较左边的值是否大于右边的值
1 > 0 结果是 true
1 > 1 结果是 false
1 > 2 结果是 false

8.<
比较左边的值是否小于右边的值
1 < 2 结果是 true
1 < 1 结果是 false
1 < 0 结果是 false

逻辑运算符:

1.&&
进行 且 的运算
符号左边必须为 true 并且右边也是 true,才会返回 true
只要有一边不是 true,那么就会返回 false
true && true 结果是 true
true && false 结果是 false
false && true 结果是 false
false && false 结果是 false

2.||
进行 或 的运算
符号的左边为 true 或者右边为 true,都会返回 true
只有两边都是 false 的时候才会返回 false
true || true 结果是 true
true || false 结果是 true
false || true 结果是 true
false || false 结果是 false

特殊:1.!!a ==>转换成布尔值 2.&& || 短路 用发

3.!
进行 取反 运算
本身是 true 的,会变成 false
本身是 false 的,会变成 true
!true 结果是 false
!false 结果是 true

自增自减运算符:

1.++
进行自增运算
分成两种,前置和后置
前置++,会先把值自动 +1,在返回

var a = 10;
console.log(++a);
// 会返回 11,并且把 a 的值变成 11
//后置++,会先把值返回,在自动+1
var a = 10;
console.log(a++);
// 会返回 10,然后把 a 的值变成 11

2.--
进行自减运算
分成两种,前置–和后置–
-- + 运算符道理一样

三元运算符:
三元运算,就是用两个符号组成一个语句
语法: 条件 ? 条件为 true 的时候执行 : 条件为 false 的时候执行

var age = 18;
age >= 18 ? alert('已经成年') : alert('没有成年')

分支结构

js 代码都是顺序执行的(从上到下)

逻辑分支就是根据设定好的条件来决定要不要执行某些代码

if 语句:
通过一个 if 语句来决定代码是否执行
语法: if (条件) { 要执行的代码 }
通过 () 里面的条件是否成立来决定 {} 里面的代码是否执行

// 条件为 true 的时候执行 {} 里面的代码
if (true) {
  alert('因为条件是 true,我会执行')
}

// 条件为 false 的时候不执行 {} 里面的代码
if (false) {
	alert('因为条件是 false,我不会执行')    
}

if else 语句:
通过 if 条件来决定,执行哪一个 {} 里面的代码
语法: if (条件) { 条件为 true 的时候执行 } else { 条件为 false 的时候执行 }
两个 {} 内的代码一定有一个会执行

// 条件为 true 的时候,会执行 if 后面的 {} 
if (true) {
  alert('因为条件是 true,我会执行')
} else {
  alert('因为条件是 true,我不会执行')
}

// 条件为 false 的时候,会执行 else 后面的 {}
if (false) {
  alert('因为条件为 false,我不会执行')
} else {
  alert('因为条件为 false,我会执行')
}

if else if … 语句:

可以通过 ifelse if 来设置多个条件进行判断
语法:if (条件1) { 条件1为 true 的时候执行 } else if (条件2) { 条件2为 true 的时候执行 }
会从头开始依次判断条件
如果第一个条件为 true 了,那么就会执行后面的 {} 里面的内容
如果第一个条件为 false,那么就会判断第二个条件,依次类推
多个 {} ,只会有一个被执行,一旦有一个条件为 true 了,后面的就不在判断了

// 第一个条件为 true,第二个条件为 false,最终会打印 “我是代码段1”
if (true) {
  	alert('我是代码段1')
} else if (false) {
	alert('我是代码段2')           
}

// 第一个条件为 true,第二个条件为 true,最终会打印 “我是代码段1”
// 因为只要前面有一个条件满足了,就不会继续判断了
if (true) {
  	alert('我是代码段1')
} else if (true) {
  	alert('我是代码段2')
}

// 第一个条件为 false,第二个条件为 true,最终会打印 “我是代码段2”
// 只有前一个条件为 false 的时候才会继续向后判断
if (false) {
  	alert('我是代码段1')
} else if (true) {
  	alert('我是代码段2')
}

// 第一个条件为 false,第二个条件为 false,最终什么也不会发生
// 因为当所有条件都为 false 的时候,两个 {} 里面的代码都不会执行
if (false) {
  	alert('我是代码段1')
} else if (false) {
  	alert('我是代码段2')
}

if else if … else 语句
和之前的 if else if ... 基本一致,只不过是在所有条件都不满足的时候,执行最后 else 后面的 {}

// 第一个条件为 false,第二个条件为 false,最终会打印 “我是代码段3”
// 只有前面所有的条件都不满足的时候会执行 else 后面的 {} 里面的代码
// 只要前面有一个条件满足了,那么后面的就都不会执行了
if (false) {
  	alert('我是代码段1')
} else if (false) {
  	alert('我是代码段2')
} else {
  	alert('我是代码段3')
}

SWITCH 条件分支结构
也是条件判断语句的一种 是对于某一个变量的判断

语法:
switch (要判断的变量) {
  case 情况1:
    情况1要执行的代码
    break
  case 情况2:
    情况2要执行的代码
    break
  case 情况3:
    情况3要执行的代码
    break
  default:
    上述情况都不满足的时候执行的代码
}

要判断某一个变量 等于 某一个值得时候使用
例子: 根据变量给出的数字显示是星期几

var week = 1
switch (week) {
  case 1:
    alert('星期一')
    break
  case 2:
    alert('星期二')
    break
  case 3:
    alert('星期三')
    break
  case 4:
    alert('星期四')
    break
  case 5:
    alert('星期五')
    break
  case 6:
    alert('星期六')
    break
  case 7:
    alert('星期日')
    break
  default:
    alert('请输入一个 1 ~ 7 之间的数字')
}

循环结构:
循环结构,就是根据某些给出的条件,重复的执行同一段代码
循环必须要有某些固定的内容组成:初始化条件判断要执行的代码自身改变

WHILE 循环:
while,中文叫 当…时,其实就是当条件满足时就执行代码,一旦不满足了就不执行了
语法 while (条件) { 满足条件就执行 }
因为满足条件就执行,所以写的时候一定要注意,就是设定一个边界值,不然就一直循环下去了

// 1. 初始化条件
var num = 0;
// 2. 条件判断
while (num < 10) {
  // 3. 要执行的代码
  console.log('当前的 num 的值是 ' + num)
  // 4. 自身改变
  num = num + 1
}

如果自身没有改变,那么就会一直循环不停了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值