javascript的变量一些问题
关于定义及undefined和 is not defined
各种出现的情况,参考代码。
定义为赋值,直接未定义的情况。
<script type="text/javascript">
a=40;
console.log(a);//可以输出a=40,但不推荐,最好用var a = 40;
console.log(b);// b is not defiend
var c;
console.log(c);// a undefiend
</script>
两个变量值的交换
<script type="text/javascript">
//不使用第三个变量,交换两个变量的值
var a = 50;
var b = 40;
a = a + b;//a=90;b=40;
b = a - b;//a=90;b=50;
a = a - b;//a=40;b=50;
</script>
js是弱类型语言
- 会根据值去推断是什么类型。
- js提供了 typeof name方法来判断是什么类型
- 对于boolean数据里的true和false,用1和0参与运算。
- 数字 + 字符串:数字转换为字符串
- 数字 + 布尔值:true转换为1,false转换为0
- 字符串 + 布尔值:布尔值转换为字符串true或false
- 布尔值 + 布尔值:布尔值转换为数值1或0
任何值都可以转换boolean
- 空字符串,0和NaN,null,undefined 是false,其他都是true。
数值问题
- Infintiy和-Infintiy:无穷大和无穷小
- NaN :非数值(Not a Number)
- NaN和任何值都不相等,包括NaN
- isNaN() 任何不能转换成数值的都会返回true
- isNaN(“abc”);//true
数据类型转换
- toString(); null和undefined没有toString()方法,可用String();
- String();//String(null);
- Number(); //对于字符串中有字符返回NaN,代码如下
- parseInt()和parseFloat(); //对于字符串中第一个是字符返回NaN,否则返回字符前的数字,代码如下
parseInt("12.3abc");//返回12
parseInt("abc12.3");//返回NaN
parseInt("");//返回NaN
Number("");//返回0
Number("1223a");//返回NaN
//注意
//parseInt("值","进制");
对于运算符
- 对除0,返回Infinity;对0取模的时候返回NaN
- ++a; // a = a+1;表达式返回a的值
- a++;//表达式先返回a的值,在计算。
对于js数组
- 有序列表
- 任意类型
- 数组大小可变