📌 循环
for循环 循环代码块一定的次数
//语法for( 初始化变量; 控制条件表达式判断; 操作表达式 ){执行语句}//案例for(var i = 0; i < 10; i++){console.log(i)}//可分解var i = 0;for(;i<10;){console.log(i);i++;}//执行步骤:/*1.声明变量 var i = 0; ----初始化变量*2.运行循环的条件 i < 10; ----控制条件表达式判断*3.满足条件执行循环代码块语句 ----执行语句*4.执行操作表达式 ----操作表达式*/
while循环 当指定的条件为 true 时循环指定的代码块
//语法var 初始化变量while( 控制条件表达式判断 ){循环体操作表达式++}
do/while循环——项目中很少使用 特点:条件无论真假,循环体至少要执行一次
//语法var 初始化变量do {循环体操作表达式++} while( 控制条件表达式判断 );
退出循环语句
- continue **退出本次循环 :退出当前次循环,继续执行剩余次数**
- break **退出整个循环 :结束整个循环,后续的循环都不执行了**
小试牛刀
//从0开始累加,求累加和小于100的数字?var sum = 0for(var i = 0; i <= 100; i++){sum += iif(sum >= 100){break;}console.log(i, sum)}-------------------------------------------------------------------------------//筛选100以内,除去可以被7整除或个位数为7的数字?for(var i = 0; i <= 100; i++){if(i % 7 == 0 || i % 10 == 7){continue;}console.log(i)}-------------------------------------------------------------------------------/*面试题:*实现打印0-100的数?*()中不允许写逻辑比较运算符*{}中不允许写子增量或自减量*/var i= 100;for(;i--;){console.log(i)}-------------------------------------------------------------------------------/*面试题:*10的N次方?*/var n = 5,num = 1;for(var i= 0 ; i <= n; i++){num *= 10}conslole.log(num)-------------------------------------------------------------------------------/*面试题:*n的阶乘?*/var n = 5,num = 1;for(var i = 1 ; i <= n; i++){num *= i}conslole.log(num)
📌 引用值初识
数组Array 记录若干数据,相当于一个数据容器
//通过字面量创建新数组【常用】var arr = [] //空数组var arr = [值1,值2,值3,值4,···] //非空数组
- 数组名[ 索引 ] :访问数组元素,对应索引无数据,输出undefined
- 数组名[ 索引 ] = 值 :数组的索引是从0开始,给对应索引赋值
- 数组名.length :获取数组中元素个数
- arr[ arr.length ] = 值 ——> length会动态改变,可给数组添加元素
- arr.length = number ——> 设置数组长度(大于数组长度有空位置,小于则会删除多余元素)
对象Object 无序数据集合,属性值可以是基本值、对象、函数
//通过字面量 创建新对象【常用var obj = {} //空对象var obj = { //非空对象键1: '字符串',键2: number,键3: function() {},···'键4': true,'say-hi': function() {}, //js命名规范不允许使用‘-’横杠,加引号可使用}
数据类型检测 typeof
typeof "John" // 返回 stringtypeof 3.14 // 返回 numbertypeof false // 返回 booleantypeof [1,2,3,4] // 返回 objecttypeof {name:'John', age:34} // 返回 objecttypeof null // 返回 objecttypeof undefined // 返回 undefined
undefined 和 null 区别
- 你可以使用 null 或者 undefined 来清空对象
- var person = null; ——> 值为 null(空), 但类型为object
- var person = undefined; ——> 值为 undefined, 类型为 undefined
- null 和 undefined 的值相等,但类型不等
- typeof undefined // undefined
- typeof null // object
- null === undefined // false
- null == undefined // true
何时使用null
- 当使用完一个比较大的对象时,需要对其进行释放内存时,设置为 null
相同点
- 都是原始类型,保存在栈中变量本地
不同点
- undefined——表示变量声明过但并未赋过值
- null——表示一个变量将来可能指向一个对象
📌 显示/隐式类型转换
显示类型转换
- Number( ) :强制转化为数字
- Number( 布尔值 ) ——> true为1,false为0
- Number( undefined ) ——> NaN
- Number( null ) ——> 0
- Number( ‘字符串’ )
- 数字字符串——> 数字类型值,否则NaN
- 空字符串 ——> 0
- 数字+字符串 ——> NaN
- String( ) :强制转化为字符串
- String( 数值 ) ——> 字符串类型”数字”
- String( 布尔值 ) ——> true为 “true”,false为 “false”
- String( undefined ) ——> “ undefined “
- String( null ) ——> “ null “
- Boolean( ) :强制转化为布尔类型
- undefined、null、-0、0、+0、NaN、” “ ——> 布尔值为false,其余都为true
- isNaN( ) :判断是否为 非数字
- 先通过Number( 值 ) ——> 判断是否为NaN ——> NaN为true,否则false
**
隐式类型转换
- + :和字符串进行加号的拼接,结果都是字符串
- - 、 * 、 / 、 % :利用减、乘、除、取余都会隐式调用Number( ) 转换为数值型
常见特殊类型转换

📋 课后作业
利用for循环算出斐波那契数列的第N位
var n = parseInt(window.prompt('N=?'))斐波那契数列:1 1 2 3 5 8 13 21 ...------------------------------------------------------------------var n = parseInt(window.prompt('请输入需要斐波那契第几位数字?'))if (n <= 0) {alert('您输入的位数不存在!')} else {if (n <= 2) {console.log(1);} else {var n1 = 1,n2 = 1,n3;for (var i = 2; i < n; i++) {n3 = n1 + n2;n1 = n2;n2 = n3;}console.log(n3);}}
