今天是看着书,记的一些基础知识,写的挺乱的以后完善嗷,书上有很多细节是看视频不知道的,以前看视频,就像是别人喂一口我吃一口,很多东西学完以后感觉都学会了,实际上很虚浮。
// 变量使用分两步:1、声明变量 2、赋值
// 1、声明变量
var age //声明一个名称为age的变量,没赋值
console.log(age); //undefined
// 变量的初始化
var age = 18 //声明变量同时赋值为18
console.log(age); //18
// console.log(a); // 不声明不赋值直接使用 报错
// 同时声明多个变量 只需要写一个var,多个变量名之间用英文逗号隔开
var age = 10,
name = 'cys',
sex = 2;
// 变量的数据类型
// 简单的数据类型:
// Number 数字型包含整数型和浮点型如 1、1.1 默认值 0
// String 字符串类型如"张三" js里字符串都带引号 默认值 ""
// Boolean 布尔值类型 如:true、false 等价1和0 默认值 false
// Null var a=null 声明了变量a为空值 默认值 null
// Undefined 声明了变量a但是没有赋值此时a=undefined 默认值 undefined
// 数字型范围
console.log(Number.MAX_VALUE); //js中数值的最大值 1.7976931348623157e+308
console.log(Number.MIN_VALUE); //js中数值的最小值 5e-324
// isNaN()判断一个变量是否为非数字的类型返回true或者false
//isNaN(x)x是数字返回false x不是数字返回true
var age = 21;
var isok = isNaN(age); //返回false是数字
console.log(isok);
var username = "zs"
console.log(isNaN(username)); //返回true 不是数字
// 字符串类型String
//js可以用单引号嵌套双引号,或者用双引号嵌套单引号,不能单双引号搭配
var str1 = "hello'word'" //双引号嵌套单引号
console.log(str1);
var str2 = 'hello"word"'; //单引号嵌套双引号
console.log(str2);
// var str3='hello" 报错 不能单双引号搭配
// 字符串长度
//通过字符串的length属性可以获取整个字符串的长度
var str = "hello!";
var length = str.length;
console.log(length);
//字符串拼接
// 字符串+任何类型=拼接之后的新字符串
console.log('hello' + 'word');
console.log('100' + '100'); //100100
console.log('11' + 12); // 1112
//布尔型 Boolean
// 布尔类型有两个值true和false true 代表真 false代表加
//布尔型和数字相加的时候,true的值为1 false 的值为0
console.log(true + 1); //2
console.log(false + 1); //1
// Undefined
// 一个声明后没有被赋值的变量会有一个默认值undefined
var variable
console.log(variable); //undefined
console.log('你好' + variable); // 你好undefined
console.log(11 + variable); // NaN
console.log(true + variable); //NaN
//null
// 一个声明变量给null值,里面存的值为空
var vari = null;
console.log('你好' + vari); //你好 null
console.log(11 + vari); //11 在关系运算符中,针对null,undefined与数字型运算,会先把null,undefined强制转换为Number类型。所以Number(null)会等于0,而undefined会等于NaN。
//Number(11) + Number(null) = 11 Number(null)=0
console.log(true + vari); //1
console.log(null);
console.log(undefined);
console.log(null == undefined);
//声明为赋值为undefined
var age;
console.log(age); //undefined
console.log(typeof undefined); //undefined
var num = null;
console.log(num); //null
console.log(typeof null); //object
console.log(typeof undefined); //undefined
console.log(undefined == null); //true undedefined的值派生自null
//Boolean 转换为true的值 转换为false的值
//Boolean true false
//String 任何非空字符串 ""(空字符串)
//Number 任何非零数字 0和NaN
//Object 任何对象 null
//Undefined n/a Undefined
//流程控制语句会自动执行响应的boolean转换
var msg = "hello"
if (msg) {
console.log("true"); //true
}
//相当执行
if (Boolean(msg)) {
console.log("true");
}
//0开头表示八进制后面是(0-7)超过范围前面的零会被忽略,后面的数值将被当作十进制数值解析
var num1 = 0123;
console.log(num1); //83
//var num2 = 079 超出范围忽略前导零 解析为79
// console.log(num2);
//0x开头十六进制后跟(0~9,a-f)
var num3 = 0xa; //10
console.log(num3);
//浮点数必须包含一个小数点(小数点前可以没有整数但是不推荐)
console.log(.1); //0.1
console.log(10.0); //10 小数点后面没有跟任何数字会被转换成整数
console.log(0.1 + 0.2); //0.30000000000000004 //浮点数最高精度是17位小数,但在算术计算是精度远远不如整数
//最大数
console.log(Number.MAX_VALUE); //1.7976931348623157e+308
//最小数
console.log(Number.MIN_VALUE); //5e-324
// 数值范围
console.log(isFinite(5)); //true 判断数值是不是有穷的可以使用isFinite函数
console.log(Number.MAX_VALUE + Number.MAX_VALUE); //Infinity
//数值超出范围会被自动换成特殊的Infinity值,正数Infinity 负数 -Infinity
console.log(Number.POSITIVE_INFINITY); //Infinity
console.log(Number.NEGATIVE_INFINITY); // -Infinity
//Nan 表示一个本来要返回数值的操作数未返回数值的情况。
console.log(1 / 0); // Infinity
//任何涉及NaN的操作都会返回NaN
console.log(NaN + 1); //NaN
//NaN与任何值都不相等包括NaN本身
console.log(NaN == NaN); // false
//isNaN() 接受一个任意类型的参数,函数会确定参数是否不是数值,接收到数值会尝试将这个值转换为数值。
//某些不是数值的值会直接转换为数值如 "100" 或Boolean值 。
//任何不能被转化为数值的值都会导致函数返回true
console.log(isNaN(NaN)); // true
console.log(isNaN(true)); //fasle 可以被转换为数值1
console.log(isNaN("10")); // false 可以被转换成数值10
console.log(isNaN("str")); //true不能转换成数值
//非数值转换为数值:Number()、parseInt()、parseFloat()
//Number() 可以用于任何数据类型 另外两个专门用于把字符串转换成数值
//Number() 函数转换规则
// Boolean Number String null undefined 字数有限省略具体转换规则
console.log(Number("a")); // NaN
console.log(Number(0001)); //1
console.log(Number("")); //0
console.log(Number(true)); //1
console.log(Number(null)); //0
//parseInt忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或者负号就会返回NaN
//第一个字符是数字就继续解析,知道解析完所有的后续字符或者遇到了非数字字符
console.log(parseInt("12a34")); //12
console.log(parseInt("123a123")); // 123
console.log(parseInt("a123")); //NaN
console.log(parseInt("")); //NaN
console.log(parseInt("070")); //70 不具备解析八进制的能力
console.log(parseInt("070", 8)); //56 提供第二个参数,即多少进制
console.log(parseInt("AB", 16)); // 171 指定了第二个参数 可以不带前面的8x
//parseFloat()从第一个字符开始,一直解析到字符串末尾或者遇到一个无效的浮点数字字符位置,第一个小数点有效第二个就无效了,因此后面的字符串将被忽略
console.log(parseFloat("1.23a")); //1.23
console.log(parseFloat("1.2.3.4")); //1.2
console.log(parseFloat("0012.3")); //12.3
console.log(parseFloat("0012.3")); //12.3
console.log(parseFloat("")); //NaN
console.log(parseFloat("123''")); //123
// String 字符串可以由双引号或单引号表示,不能一单一双,左右引号必须匹配。
//任何字符串的长度都可以通过其length属性取得
//字符串的特点:
//字符串不可变 改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量
var str = "a";
var str = str + "b"
console.log(str);
//首先创建一个能容纳两个字符的新字符串,然后在这个字符串中填充"a"和"b"最后销毁原来的字符串a和b
//转换为字符串
//toString() null和undefined没有这个方法
console.log(true.toString()); //字符串"true
var age = 18;
console.log(age.toString()); //字符串"18
console.log(1..toString()); //字符串"1" 解析器把1和.连在了一起
console.log((1).toString()); //字符串"1"
//可以传递参数输出数值的基数
console.log("a".toString(16)); //a
// String()函数能够将任何类型的值转换为字符串。
//规则:如果值有toString()方法则调用该方法,null返回null undefined返回undefined
console.log(String(null)); //"null"
console.log(String(undefined)); //"undefined"
console.log(String(false)); //"false"
//某个值转换为字符串可以使用加号操作符
console.log(1 + ""); // "1"
//object 对象其实就是一组数据和功能的集合。可以通过执行new操作符后跟要创建的对象类型的名称来创建
var o = new Object();
//如果不给构造函数传参可以省略后面的圆括号 var o=new Object 但不推荐
//Object 类型所具有的任何属性和方法也同样存在于更具体的对象中
//object每个实例都具有下列属性和方法
//Constructor、hasownproperty、isprototypeof、propertyisenumerable、tolocalestring、tostring、valueof