这篇文章是我自己在学习js过程中做的笔记,如果有错误或者遗漏的请评论告诉我。希望大家一起学习!
笔记内容主要有:数据类型、输出方式、查看数据类型、类型转换、自动类型转换、运算符、运算符优先级
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
// 1.数据类型:
// 字符串 string
// 数字 number
// 布尔型 boolean - ture false
// 对象 object - 例如:{one:1,two:2,three:3}
// 数组 Array - 例如: [1,2,3]
// 函数 function
// null 空 对象
// undefined 未定义
/*
NaN 的数据类型是 number
null与undefined的区别?
null == undefined
null !== undefined
null的类型是object,这是由于历史原因造成的。1995年JavaScript语言的第一版,所有值都设计成32位,
其中最低的3位用来表述数据类型,object对应的值是000。当时,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),
完全没考虑null,只把它当作object的一种特殊值,32位全部为0。这是typeof null返回object的根本原因。
为了兼容以前的代码,后来就没法修改了。这并不是说null就属于对象,本质上null是一个类似于undefined的特殊值。
那么他们的区别是?
null是一个表示”无”的对象,转为数值时为0;undefined是一个表示”无”的原始值,转为数值时为NaN。
null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值:
表达式:123 + null 结果值:123
undefined出现的场景:
变量声明了,但没有赋值 var i; i // undefined
调用函数时,应该提供的参数没有提供,该参数等于undefined function f(x) { return x; } f()
// undefined
对象没有赋值的属性 var o = new Object(); o.p // undefined
函数没有返回值时,默认返回undefined function f() {} f() // undefined */
// 2.三种输出方法:document.write() ,alert(),console.log()
// 3.查看数据类型使用: typeof 变量名
// 变量名 instanceof 类型(仅限于object类型,用于判断null,数组,对象)
//正因为 typeof 遇到 null,数组,对象时都会返回 object 类型,所以当我们要判断一个对象是否是数组时,使用 变量名 instanceof 类型。
// 4.强制数据类型转换:
//(1) parseInt() 转换为number类型整数;被转化类型的首字符要为数字才能得到具体的值
var a = "123";
a = parseInt(a);
console.log(a , typeof a);//123 Nubmer
var a = "abc2";
a = parseInt(a);
console.log(a , typeof a);//NaN Number
var a = "2px";
a = parseInt(a);
console.log(a , typeof a);//2 Number
//(2) parseFloat() 转换为number类型小数;被转化类型的首字符要为数字才能得到具体的值
var a = "25.2";
a = parseFloat(a);
console.log(a , typeof a);//25.2 Number
var a = "25.00";
a = parseFloat(a);
console.log(a , typeof a);//25 Number -- 如果转化后小数点后为有效值就保留,否则删除
var a = "25.2abc";
a = parseFloat(a);
console.log(a , typeof a);//25.2 Number
//(3) Number() 转换为numbe类型;只能是纯数字的字符串得到具体值,其他的都得到NaN
// string-->number
var a = "123";
a = Number(a);
console.log(a , typeof a);//123 Numner
// boolean-->number
var a = true;
a = Number(a);
console.log(a , typeof a);//1 Number
var a = false;
a = Number(a);
console.log(a , typeof a);//0 Number
// null-->number
var a = null;
a = Number(a);
console.log(a , typeof a);//0 Number
/*
(4) Boolean() 转换为boolea类型
除了0 "" '' undefined NaN null 得到false ,其他都是ture
*/
//(5) String() 转换为字符串类型 任何数据都能转换为字符串类型
// toString() 转换为字符串类型 但是要排除null和undefined
// 5.自动类型转换 根据上下文环境,Javascript进行自动类型转换
var n1 = "2";
var n2 = "1";
var n3 = n1-n2;//减法语义,按照数字进行运算
console.log(n3 , typeof n3);//1 Number
var n4 = false;
var n5 = n1-n4;
console.log(n5 , typeof n5);//2 Number
// 6.运算符
// (1)算术运算符:+ - * / % ++ --
// %:取余数
var a = 12, b = 5;
var c = a%b;
console.log(c);//2
// ++:自身加 1
// 前置++:++a ==> a = a + 1
// 注意:前置++和其他数据参与运算时,先自增 1后运算
var a = 12;
var b = ++a + 3;
console.log(a,b);//13 16
// 后置++:a++ ==> a = a + 1
// 注意:后置++和其他数据参与运算时,先运算后自增 1
var a = 12;
var b = a++ + 3;
console.log(a,b);//13 15 (a在参与运算完后才自增)
// 求下列a,b,c,d的值
var a=3,b=5,c,d;
c = a++ +b; //a=4 b=5 c=8
d = ++a - b++; //a=5 b=6 d=0
console.log(a,b,c,d); //a=5 b=6 c=8 d=0
// 求下列a,b,c的值
var a=1,b=2,c;
c = a++ + b; //a=2 b=2 c=3
c = --a + b; //a=1 b=2 c=3
a = c-- + (++b); //c=2 b=3 a=6
b = a-- + (++c); //a=5 c=3 b=9
console.log(a,b,c); //a=5 b=9 c=3
// (2)比较运算符(得到结果为ture或false):== != > >= < <= ===(全等于) !==(不全等于)
// ==:比较值的大小(判断)不比较数据类型
// ===:比较值的大小 还比较值的数据类型
// !=:结果和==是相反的,如果==判断的结果为true,那么!=得到的结果为false
// !==:结果和===是相反的,如果===判断的结果为true,那么!==得到的结果为false
// (3)逻辑运算符:与(&&) 或(||) 非(!)
// &&:a&&b,如果a为true,直接返回b,而不管b为true或false;如果a为false,直接返回a
var a = 1&&2&&3;//3
var b = 0&&1&&2;//0 -第一个为false的话,返回自己本身,不管后面
var c = 1&&2&&0;//0 -为true时,一直往下执行,直到false停止
// ||:a||b,如果a为false,直接返回b,而不管b为true或false;如果a为true,直接返回a
var a = 0||1||2;//1
var b = 1||0||3;//1
// !:取反 若a为true,!a返回false,否则返回true。
var a = !1;
console.log(a);//false
// (4)三元运算符:variablename=(condition)?value1:value2
// 变量名称=(条件)?"符合条件时输出的值":"不符合条件时输出的值"
// (5)字符串连接符(+)
// a+b:如果a和b中至少有一个是字符串,此时+不是运算符加号,而是连接符,得到的结果还是字符串
var a = 1,b=2,c="你我他";
console.log(a+b+c);//3你我他
var a = 1,b=2,c="你我他";
console.log(a+c+b);//1你我他2
/* (6)赋值运算符:
=
+=: a+=b 等同于 a=a+b
-=: a-=b 等同于 a=a-b
*=: a*=b 等同于 a=a*b
/=: a/=b 等同于 a=a/b
%=: a%=b 等同于 a=a%b
*/
var a = 1,b = 2;
a+=b;
console.log(a);//3
/* (7)运算符优先级
. [] () 字段访问、数组下标、函数调用以及表达式分组
++ -- ~ ! 一元运算符、返回数据类型、对象创建、未定义值
* / % 乘法、除法、取模
+ - + 加法、减法、字符串连接
<< >> >>> 移位
< <= > >= 小于、小于等于、大于、大于等于、instanceof
== != === !== 等于、不等于、严格相等、非严格相等
& 按位与
^ 按位异或
| 按位或
&& 逻辑与
|| 逻辑或
?: 条件
= oP= 赋值、运算赋值
, 多重求值
优先级越高的优先也运算,可以用()提升优先级
例如:z = 78 * (96 + 3 + 45)
*/
</script>
</body>
</html>
接下来的日子我还会继续更新我的笔记 ,为了我能早日成为厉害的前端工程师加油。