可重复声明,有变量提升,没有块级作用域{}
var a = 10;
var a = 20;//变量可重名,不报错
console.log(b);//undefined,有变量提升,不报错
var b = 20;
if (true) {
var c = 'hello';
console.log(c);//因为var没有块级作用域,所以if外仍可以访问到if内的c的值
}
console.log(c);//hello
不可重复声明,无变量提升,有块级作用域{}
let a1 = 100;
// let a1=200; 不可重名 报错
// console.log(b1);
// let b1=300; 无变量提升,报错
// if (true) {
// let c1 = 'hello';
// console.log(c1);
// }
// console.log(c1); 报错,因为有块级作用域,所以无法访问到{}内c1的值。
声明常量,必须有初值,不能重名,没有提升,有块级作用域,可以声明对象、数组、函数。
const a2 = 800;
// a2=900; error 不能重名
console.log(a2);
const arr = [30, 40, 50];
// arr=[50,60,70]; error 不能将数组内的数全部修改,只能一个一个修改
arr[0] = 500;
console.log(arr);// 0:500 1:40 2:50 length:3
? ?String? Number? Bollen? Null? Undefined
? ? ? Number(参数)
? ? ? ? ''(空串)?--0 , ?' ?'(空格)--0, ?'123'(数字)---123, ?'123hel'(数字加字母)--NaN, null--0 ?,false--0
//空字符串和空格
let str = '';
str = ' '
str = Number(str);
console.log(str, typeof str); //0 number
//数字
let str1 = '123';
str1 = Number(str1);
console.log(str1, typeof str1); //123 number
//数字加字符串
let str2 = '123hre';
str1 = Number(str2);
console.log(str1, typeof str1); //NaN number
//布尔
let flag = true;
flag = false;
flag = Number(flag);
console.log(flag, typeof flag); //0 number
//null undefined
let a = null;
a = Number(a);
console.log(a, typeof a); //0,number
//未赋值的变量
let b;
console.log(Number(b)); //NaN
parseInt(参数) ?整数,parseFloat(参数)? 浮点数(小数),
数字在前可提出来:?'123'? '123LL' --123,其他均为NaN。
let str3 = '123'
str3 = '123hel'
str3 = '123.56H'
console.log(parseFloat(str3));//123.56
console.log(parseInt(str3));//123
console.log(parseFloat(''), parseFloat(' '), parseFloat(true),
parseFloat('HELLO123'), parseFloat(undefined) );//NaN,NaN,NaN,NaN,NaN
? ? ? ? 纯数字的字符串前面打上+,或者乘除1,或者取余:+'123' ?'123'*1 '123'/1 ?'123'%1 ?'123'-0
let num = prompt('请输入一个数字:')
console.log(num, typeof num);
num=+num;
console.log(num,typeof num);
console.log('123'*1+'123'/1+'123'%1);//246
? ?String(参数) ? ---所有都能转 ,参数.toString() ?--null和Undefined不能
let num=123;
num=String(num);
console.log(num,typeof num);// 123 string
let a=null;
a=undefined;
a=true;
a=String(a);
console.log(a,typeof a);// true string
let num1=789;
num1=true;
num1=num1.toString();
console.log(num1,typeof num1);//true string
// let a1=null;
// a1=a1.toString();// error null不能进行转换
// console.log(a1,typeof a1);
? ? 123 + '' ----? '123' ? ?拼接空串自动转换 ?
let b =123;
b=b+'';
console.log(b,typeof b);//123 string
只有6个是假其他全为真,分别是:'' , null,?undefined ,0,?NaN ,false
真值也有:[],? ?{},? ?'? '? ,"? ?"。
console.log(Boolean(''), Boolean(null), Boolean(undefined), Boolean(0), Boolean(NaN), Boolean(false), );//false false false false false false;
console.log(Boolean([]), Boolean({}), Boolean(' '), Boolean(" "));// true true true true;
isNaN() 函数用于检查其参数是否是非数字值。如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
<script>
console.log(isNaN(NaN)); //true
console.log(isNaN('')); //0--false
console.log(isNaN(' ')); //0--false
console.log(isNaN('123hello')); //123hello--true
console.log(isNaN('123')); //123--false
console.log(isNaN(NaN)); //true
console.log(isNaN({})); //true
console.log(isNaN(undefined)); //true
</script>
<script>
let num = prompt('请输入一个数字')
console.log(num);
/*
Number() NaN '' ' ' null ----0
parseFloat() '123' '123hello' 其他NaN
*/
let a = Number(num) && parseFloat(num);
console.log(a);
if (isNaN(NaN)) {
console.log('不是一个数字');
} else {
console.log('是数字')
}
</script>