js基础补充
js作用
操作 html + css
动态渲染数据
数据类型:
number / string / boolean / null / undefined
判断数据类型: typeof
转换:
转字符串 String() +
转数字 Number() + / - / * / / / % Math.round() Math.floor() Math.ceil()
parseInt()
在把小数转为整数的时候 == Math.floor()
还可以取出字符串里面的小数(字符串里面的第一位数字开始,到第一个非数字结束)
parseFloat() 取小数
parseInt:
// 提取到第一个非数字为止的整数
var m = parseInt('.24.5px2');
console.log(m); // NaN
var m = parseInt('0.24.5px2');
console.log(m); // 0
var m = parseInt('24.5px2');
console.log(m); // 24
var m = parseInt(24.5);
console.log(m); // 24
parseFloat:
var m = parseFloat('24.5px');
console.log(m); // 24.5
判断
if switch
循环:
while for
break ,continue
死循环
函数
系统函数 , 自定义函数
封装性,复用性,调用性
匿名函数:自调用(一次性函数):+function(n){console.log(n)}(666s)
函数的封装
语法 function name(形参1,形参2,...) {}
提取形参
是否需要返回值
注释!!!!!!!!!!!!
调用
形参(函数声明),实参(函数调用)
return 给函数一个返回值
会提前结束整个函数
短路赋值
运用逻辑运算,就是为了当函数调用时没有赋值或者形参与实参不对等,但是要求有输出值时可以运用短路赋值。
与运算:见假即假,或运算:见真即真,
var n = 1 || 2; // n = (1 || 2) // n = 1
console.log(n);
var n = 0 || 3; // n = (0 || 3) // n = 3
console.log(n);
var n = 1 && 2; // n = (1 && 2) // n = 2
var n = 0 && 3; // n = (0 && 3) // n = 0
例如:在给求和封装一个函数中
function sum(a, b) {
//当a没有传参时,a的值就为后面的0;运用或运算
a = a || 0;
b = b || 0;
return a + b;
}
console.log(sum())//没有实参
作用域
变量是有作用域的
优先找自己的,自己找不到就找向上一级查找,一直找到script为止,一直找不到就报错
全局作用域 -- 全局变量
在函数外面声明的变量
没有var 的变量
局部作用域 -- 局部变量
在函数内部声明的变量(形参本质上是一个局部变量)
js的特色---预编译(毕竟是不规范的,也许以后更新了会不存在,会在面试题中出现)
js代码的执行分两个阶段
预编译阶段
首先会找到所有的var声明的变量
找到所有的具名函数
代码执行阶段
你看到的代码:
console.log(a); // undefined
var a = 10 ;
console.log(a); // 10
实际上js解析的:
var a ;
console.log(a);
a = 10 ;
console.log(a);
难度加大: 你看到的:
console.log(a);
var a = 10;
a()
function a() {
console.log(3);
var b = 4;
}
console.log(b);
var b = 5;
console.log(b);
console.log(a);
实际上js解析的:
var a ;
var b ;
function a() {
// 在函数内部也有预编译
var b ;
console.log(3);
b = 4 ;
}
console.log(a); // f
a = 10 ;
a() ; // a is not a function
console.log(b); // undefined
b = 5 ;
console.log(b); // 5
结果:
函数的递归
传递与回归,自己调用自己。(在控制台中用断点的方法理解传递与回归)
死递归:function fn (){ fn() }fn()
例如求1加到100的和,方法一肯定是好理解的用循环求,这是用递归来看
function sum(n) {
if (n == 1) {
return 1
}
return n + sum(n - 1)
}
console.log(sum(100))