第一周

57 阅读4分钟

一.如何使用js;

1.html页面 2.js文件;

二.打桩语句

1控制台输出日志:consol.log(); 2在页面输出日志:document.write(); 3弹出框日志:alert();

三.变量与常量

1变量:创建后可以修改 var 2常量:创建后不允许修改 const

四.基本数据类型 number---数字 string---字符串 boolea---布尔 null---空 undefin---只有1 查看数据类型:typeof

五.运算符

  • 碰到字符串为拼接
    • / % %:取余 作用:判定奇数偶数等 隐式转换:true--1
      false--0 underfined--NaN -NaN--不是一个数字,但是是数字类型 -NaN-参与算术运算结果为NaN 参与比较都是false null--0 “1000”=1000

六.逻辑运算

&&与 ||或 !非

七.自增自减

++ 前++参与运算时先自增再运算 后++参与运算时先运算再自增

-- 前--参与运算时先自减再运算 后--参与运算时先运算再自减

八.分支结构

1.判定 if...else.. 代码段 if(条件){ 操作; }else if(){ }可以写件事 不满足就做下面的 分支走了一条不会走其他的路 2switch..case分支: 语法: switc(变量/表达式){ case值1; 操作1; break; case值2;-------------------可以写多个 操作2; break; defaul;-----默认操作 }

* #第二天

1.程序流程: 1.顺序结构、 2.分支结构、3.循环结构

2.if...else分支: 1.if、2.if...else、if..else if...else

3.swithc...case 分支:

语法:switch(变量、表达式){ case 值1:操作一 case 值1:操作一 case 值1:操作一;; } 特殊:默认只要一个case满足后,会将后续所有操作全部完成可在每个case后加break; 多个条件操作是一样的可以不加break case在做比较时不带有隐式转换的 default 可以省略不写,但是不推荐 switch和if的区别: s效率高,是等值比较 if是范围查找,执行效率慢

4.三目运算

条件1?操作1:默认操作 条件1?操作1:条件2?操作2:默认操作

5.强制(显示)数据类型转换

转字符串:x.toString、s=String(x) 转数字: parseint() 从左往右依次读取遇到非数字字符停止,一开始就不认识为NAN parseFloat(str) 专门讲字符转化为小数,只认识第一个小数点,原理同上 number() 万能的,将任何转为数字 完全等效于隐式转换 转布尔:Boolean(x) 万能 可以将任何转化为布尔,完全等效于隐式转换 !!x 只有留个为false :0,"",undefined,NAN,null,false 其余都为true

第三天

1.循环三要素:循环条件 循环体 循环变量

2.三种循环:

while循环 while(条件){ 循环体;循环变量变化}

while(true、1)死循环 break结束循环 continu 退出本次循环 继续下一循环 for循环: for(var i=0; i<=100;i++){ 循环体} 特殊: for(;;){} 死循环 面试题:for和while的区别 **不确定次数用while 确定次数用for 随机整数公式:parseint(Math.random()*(max-min+1)+min) 3.函数的基础 function 函数名(型参,型参){函数体/代码段} 函数不会立马执行,需要调用 调用:函数名(实参,实参) 实参顺序不能乱要一一对应 注意:循环几乎是一瞬间完成的,函数需要调用才会执行 #第四天 1.自定义函数:

function:函数名(型参,型参){ 操作、return返回值} var 函数名=function(型参,型参){ 操作、return返回值}

2.调用函数:、 var 一个变量=函数名(型参,型参)

return 本意是退出函数 后面的内容不再执行,将数据返回到函数作用域的外部,只负责返回不负责保存,需要用变量接住

3.作用域:

全局作用域:全局变量和全局函数,在页面任何位置都可以使用 函数作用域:局部变量局部函数,在当前函数调用时,内部可以用 全局污染: 全局本身没有这个东西,但是在函数中声明了就会被添加上 局部变量可以使用全局,但是全局不能使用局部

4.声明提前

规则:在程序正式执行之前,将var声明的变量(最前面)和function声明的函数(次之)都会悄悄的集中定义在作用域顶部,但是赋值会留在原地 声明方式创建的函数会被完全提前 直接方式创建的函只有变量部分会提前 5.重载:相同的函数名 根据传入实参的不同,自动选择对应的函数去执行 但是js并不支持函数名重复,所以后面的会把前面的覆盖 解决:在函数内部自带的一个arguments的对象(类数组对象),它可以接住所有的实参默认长度为0 固定套路: 通过下标去获取传入的某一个实参,arguments[i] i从0开始 通过length去获取到底传入了几个参数,arguments.length。通过判断传入实参的不同,在内部去判断,从而变相实现重载