parseFloat
let str = '12.12'
会把'12.12'字符串变成浮点说数
let num2 = parseFloat (num)
会把12.20转成12.2
let str2 = parseFloat(12.20)
console.log(str2);
parseIn
let num = 12.12;
let str = '12.12';
12.12会被取整为12
let num2 = parseInt(num)
isNaN
NaN not a number 表示不是一个数字
使用isNaN方法来判断 是不是一个数字
如果不是数字 就返回 true
是数字就返回 false
console.log( isNaN('abc' - 123) );
变量提升
当你下面使用var的时候会出现变量提升的情况
var a => a = undefined (已经声明了
但是没有赋值,给了一个初始值叫做undefined )
console.log(a);
var a = '123';
let 不存在变量提升,不能在还没有初始化的时候
使用变量,否则就给报错 下面的代码就不会被执行
console.log(a)
let a = '123'
let 不能够重复定义
全局变量:在函数外声明的变量,网页上的所有脚本和函数都能访问
在函数里面没有使用let或者var
a会变成一个全局变量
只能在函数内部访问它
а='123
console.log(a);
}
局部变量: 在函数外声明的变量,网页上的所有脚本和函数都能访问
作用域链:可以通过代码访问的属性和一系列仅供Javascript引擎访问的内部属性该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链
作用域链首先会在当前的作用域内去变量对应的值如果找不到,会向上一层一层的去寻找
闭包:
- 一个函数就可以理解为一个闭包
- 函数2被包括在1内部,1内部的所有局部变量,对2都是可见的
- JS特有的"链式作用域"结构(对象的所有变量,对子对象都是可见的,反之则不成立)
闭包的用途
- 可以读取函数内部的变量
- 让这些变量的值始终保持在内存中