1.注意:不要直接判断两个浮点数是否相等
console.log(0.1 + 0.2);//0.30000000000000004
console.log(0.1 + 0.2 == 0.3);//false
console.log(parseInt(0.01) * 10 + parseInt(0.02 * 10) == parseInt(0.3));//true
2.isNaN("red");//false 任何不能被转换为数值的值都会返回true
3.字符串是不可变的,他在内存中都是另辟空间的。(内从中栈是用来存储基本类型的)
var str="old";str="new"; console.log(str);//new
栈中有两块空间分别存放"old","new",只不过"old"无法在访问,等待垃圾回收。
4.字符串拼接。
var a='100',b=100; var c=a+b,d=a-c;
console.log(c);//100100 typeof(c)//string
console.log(d);//0 typeof(c)//number
5.Boolean(''),Boolean(0),Boolean(NaN),Boolean(null),Boolean(undefined)均返回false.
注意: var s="0"; console.log(Boolean(s));//true
6.转换成字符串类型的三种方法 toSting(), String(), ""+str ,
几乎每一个值都有toString()方法,除了Null只有一个值null , Undefined只有一个值undefined
console.log(typeof undefined);//undefined
console.log(typeof null);//object
String()用于转换undefined和null
console.log(toString(null) );//[object Undefined]
console.log(String(null) );//null
7.转换成数值类型的三种方法 Number(),parseInt(),parseFloat()
var a="123",b="123a",c=11.1;
console.log(Number(b));//NaN Number()如果要转换的字符串中有一个不是数值的字符,则返回NaN
console.log(Number(" "));//0
console.log(parseInt(b));//123
console.log(parseFloat(b));//123
console.log(parseInt(c));//11
console.log(parseFloat(c));//11.1
8.函数的返回值.若return ; 则返回undefined 若没有return 也返回undefined
function add() {
var str=5;
}
console.log(add());//undefined
function add1() {
var str=5;
return ;
}
console.log(add1());//undefined
9.javaScript没有重载。
10.变量作用域问题。
f1();
console.log(c);//9
console.log(b);//9
console.log(a);//ReferenceError: a is not defined
function f1() {
var a=b=c=9;
console.log(a);//9
console.log(b);//9
console.log(c);//9
}
11.1.函数是一种数据类型;2.函数可以作为另一个函数的参数
12.浅拷贝:一种是把一个对象的地址给另一个对象,是他们的指向相同,两个对象用共同的属性和方法(堆中只有一块空间);另一种是把一个对象中的所有内容复制一份给另一个对象(堆中有两块空间)。
var o1={ name:"lisi", age:20, sayHi:function () { console.log("hi"); } }; var o2=o1;//
堆中只有一块空间console.log(o2.name);//lisi o2.sayHi();//hi
深拷贝: