document.write('要输出的内容')
- 向body内输出内容
- 如果输出的内容写的是标签,也会被解析成网页元素
alert('要输出的内容')
- 页面弹出警告对话框
console.log('控制台打印')
- 控制台输出语法,程序员调试使用
prompt('请输入您的名字:')
- 显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字
在计算机科学中,字面量(literal)是在计算机中描述 事/物
1. 变量:
let 变量名
- 声明变量有两部分构成:声明关键字、变量名(标识)
- let 即关键字 (let: 允许、许可、让、要),所谓关键字是系统提供的专门用来声明(定义)变量的词语
注意: let 不允许多次声明一个变量。
目标:能够说出变量的本质是什么
目标:能写出符合规范的变量名
规则: 必须遵守,不遵守报错
规范: 建议,不遵守不会报错,但不符合业内通识
let 和 var 区别:
let 为了解决 var 的一些问题
var 声明:
以后声明变量我们统一使用 let
数组(Array)是一种可以按顺序保存多个数据
目标:能够声明数组并且能够获取里面的数据
1. 声明语法:
let 数值名 = [数据1,数据2,……,数据n]
let names = ['一','二','三','四']
索引或下标
2. 取值语法
数组名[下标]
let names = ['一','二','三','四']
names[0] //一
names[1] // 二
let names = ['一','二','三','四']
names[0] //一
names[1] // 二
names.length // 4
目标:能说出JS中基本数据类型有哪些
计算机世界中的万事万物都是数据。
计算机程序可以处理大量的数据,为什么要给数据分类?
JS 数据类型整体分为两大类:
JavaScript 中的正数、负数、小数等 统一称为 数字类型。
JS 是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认
Java是强数据类型 例如 int a = 3 必须是整数
通过单引号( '') 、双引号( "")或反引号(
)包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用
单引号`。
注意事项:
document.write(`大家好,我叫${name},今年${age}岁`)
表示肯定或否定时在计算机中对应的是布尔类型数据。
它有两个固定的值 true 和 false
,表示肯定的数据用 true(真),表示否定的数据用 false(假)。
未定义是比较特殊的类型,只有一个值 undefined。
什么情况出现未定义类型?
只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少【直接】为某个变量赋值为undefined。
工作中的使用场景:
我们开发中经常声明一个变量,等待传送过来的数据。
如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否
有数据传递过来。
null 表示 值为 空
let obj = null
null 和 undefined 区别:
null 开发中的使用场景:
官方解释:把 null 作为尚未创建的对象
大白话: 将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个null
1. 控制台输出语句:
JavaScript是弱数据类型: JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。
坑: 使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算。
console.log('1000'+'2000') // 输出结果 10002000
此时需要转换变量的数据类型。
通俗来说,就是把一种数据类型的变量转换成我们需要的数据类型。
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
规则:
除了+以外
的算术运算符 比如 - * / 等都会把数据转成数字类型缺点:
编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。
为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。
概念:
自己写代码告诉系统该转成什么类型
转换为数字型
Number(数据)
parseInt(数据)
parseFloat(数据)
String(数据)
目标:掌握算术运算符,能写出一些具备运算能力的小程序
数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。
目标:能说出JavaScript算术运算符执行的优先级顺序
同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。
JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行
。
目标: 能够使用一元运算符做自增运算
众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
let num = 10 + 20
自增运算符的用法:
目标:掌握比较运算符,为程序“能思考”做准备
更喜欢 ===
或者 !==目标:掌握逻辑运算符,为程序“能思考”做准备
目标:掌握运算符优先级,能判断运算符执行的顺序
逻辑非优先级很高
目标:能说出表达式和语句的区别
表达式:
表达式是一组代码的集合,JavaScript解释器会将其计算出一个结果
语句:
js 整句或命令,js 语句是以分号结束(可以省略)
比如: if语句 for 循环语句
区别:
表达式计算出一个值,但语句用来自行以使某件事发生(做什么事)
表达式
3 + 4
语句
alert() 弹出对话框
其实某些情况,也可以把表达式理解为语句,因为它是在计算结果,也是做事
目标:掌握流程控制,写出能“思考”的程序
1. if语句
if (条件){满足条件要执行的代码
}
双分支if语法:
if (条件){满足条件要执行的代码
} else {不满足条件执行的代码
}
if (条件1){代码1
} else if (条件2){代码2
} else if (条件3){代码3
} else {代码n
}
释义:
2. 三元运算符
目标:能利用三元运算符执行满足条件的语句
条件 ? 满足条件执行的代码 : 不满足条件执行的代码
3. switch语句
目标:能利用switch执行满足条件的语句
switch(数据){case 值1:代码1breakcase 值2:代码2breakdefault:代码nbreak
}
释义:
注意事项:
目标:掌握循环结构,实现一段代码重复执行
目标:掌握while循环语法,能重复执行某段代码
循环:重复执行某段代码, 而 while : 在…. 期间
1. while 循环语法:
while (循环条件){重复执行的代码(循环体)
}
释义:
2. while 循环注意事项:
循环的本质就是以某个变量为起始值,然后不断产生变化量,慢慢靠近终止条件的过程。
所以,循环需要具备三要素:
目标: 能说出continue和break的区别
1. for循环语法
for (声明记录循环次数的变量;循环条件;变化值){循环体
}
for (声明记录循环次数的变量;循环条件;变化值){for (声明记录循环次数的变量;循环条件;变化值){循环体}
}
1. 声明语法
let 数组名 = [数据1,数据2,……,数据n]
let names = ['小明','小刚','小红','小丽']
2. 取值语法
数组名[下标]
3. 一些术语:
4. 遍历数组:
用循环把数组中每个元素都访问到,一般会用for循环遍历
for (let i = 0; i < 数组名.length; i++){数组[i]
}
数组本质是数据集合, 操作数据无非就是 增 删 改 查
语法:
1. 数组增加
新的数据
数组.push()
方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度 (重点)
语法:
arr.push(元素1,……,元素n)
arr.unshift(新增的内容)
方法将一个或多个元素添加到数组的开头,并返回该数组的新长度
语法:
arr.unshift(元素1,……,元素n)
2. 数组删除
元素
数组. pop()
方法从数组中删除最后一个元素,并返回该元素的值
语法:
arr.pop()
数组. shift()
方法从数组中删除第一个元素,并返回该元素的值
语法:
arr.shift()
数组. splice()
方法 删除指定元素
语法:
arr.splice(start,deleteCount)
arr.splice(起始位置,删除几个元素)
解释:
函数:
function,是被设计为执行特定任务的代码块
说明:
函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于精简代码方便复用
。
function 函数名(){函数体
}
function getName(){}
function addSquares(){}
//函数调用,这些函数体内的代码逻辑会被执行
函数名()
注意:声明(定义)的函数必须调用才会真正被执行,使用()调用函数
1. 为什么要有参数的函数
2. 有参数的函数声明和调用
function 函数名(参数列表) {函数体
}
函数名(传递的参数列表)
3.形参和实参
形参可以理解为是
在这个函数内声明的变量
(比如 num1 = 10)实参可以理解为是给这个变量赋值开发中尽量保持形参和实参个数一致
1. 为什么要让函数有返回值
2. 用return返回数据
return 数据
return 后面的数据不要换行写
1. 作用域概述
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围
就是这个名字的作用域
。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
2. 变量的作用域
在JavaScript中,根据作用域的不同,变量可以分为
3. 变量的作用域
变量有一个坑, 特殊情况:
如果函数内部或者块级作用域内部,变量没有声明,直接赋值,也当全局变量
看,但是强烈不推荐
但是有一种情况,函数内部的形参可以看做是局部变量。
4.变量访问原则-作用域链
就近原则
的方式来查找变量最终的值函数可以分为:
1. 匿名函数
将匿名函数赋值给一个变量,并且通过变量名称进行调用 我们将这个称为函数表达式
语法:
let fn = function(){// 函数体
}
调用:
fn() // 函数名()
其中函数的形参和实参使用跟具名函数一致
2. 立即执行函数
场景介绍: 避免全局变量之间的污染
语法:
// 方式1
(function() {console.log(11)})()
// 方式2
(function() {console.log(11)}())
1. 对象声明语法
let 对象名 = {}
2. 对象有属性和方法组成
let 对象名 = {对象名:属性值,方法名:函数
}
3. 属性
数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。
let person = {uname: 'andy',age:18,sex:'男'
}
一般情况下省略
,除非名称遇到特殊符号如空格、中横线等4. 属性访问
声明对象,并添加了若干属性后,可以使用 . 或 [] 获得对象中属性对应的值,我称之为属性访问。
简单理解就是获得对象里面的属性值。
5. 对象中的方法
数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数。
6. 对象中的方法访问
声明对象,并添加了若干方法后,可以使用 . 调用对象中函数,我称之为方法调用。
对象本质是无序的数据集合, 操作数据无非就是 增 删 改 查 语法:
增加属性
也可以动态为对象添加属性,动态添加与直接定义是一样的,只是语法上更灵活。
新增对象中的方法
也可以动态为对象添加方法,动态添加与直接定义是一样的,只是语法上更灵活
注:无论是属性或是方法,同一个对象中出现名称一样的,后面的会覆盖前面的。
对象没有像数组一样的length属性,所以无法确定长度
对象里面是无序的键值对, 没有规律. 不像数组里面有规律的下标
遍历对象
Math.floor(Math.random()*(5 + 1)) + 5
Math.floor(Math.random()*(M - N + 1)) + N
简单类型又叫做基本数据类型或者值类型
,复杂类型又叫做引用类型
。
堆栈空间分配区别:
简单数据类型存放到栈里面
引用数据类型存放到堆里面
简单类型的内存分配
值类型(简单数据类型): string ,number,boolean,undefined,null
值类型变量的数据直接存放在变量(栈空间)中
复杂类型的内存分配
上一篇: 江阴鹅鼻嘴公园导游词
下一篇: 呀诺达的导游词