JavaScript中数据类型
- number
- string
- boolean
- undefined
- object
- null
其中基本数据类型为number,string Boolean,undefined,null
object为复杂数据类型(广义的对象)
算式运算
NaN与任何数值运算都是NaN
在实现number与number运算的情况下,和java等编译语言不同的地方是:
- java在int数据进行除法时,会将小数部分自动省略,而JavaScript中的number进行除法时,会保留小数。
- java中没有说过直接让两个数值进行与或运算,而在JavaScript有说让两个数值进行与或运算。对于非布尔值进行与运算,会先将其转化为布尔值,然后在运算,并返回原值;
JavaScript中与运算的规则
如果两个值都为true,返回最后一个真值,返回值类型为number;如果一真一假,返回false,返回值类型为number;如果全假的话,返回第一个假,返回值类型根据第一个假值而定。(NaN或0)
进行与运算,如果第一个值为true,直接返回第二个值,如果第一个值为false,则直接返回第一个值;进行或运算,如果第一个值为true,必然返回第一 个值,如果第一个值为false,则直接返回第二个值。
关系运算符> <
number类型数值进行> 或者 < 运算跟java中的规则一致;字符串类型数值进行对比,比较的是字符第一个字符的大小,如果第一个一样大,则进行下一个字符的对比,直到对比完或者找到大于或者小于的情况。
所以在我们比较俩个字符串的数字时,一定要记得转型对比。
console.log("123344" > +"3"); //加“+”强制转型
转义字符
在JavaScript中使用转义字符输入Unicode编码
\u + 四位编码(十六进制)
再网页中直接使用 &+#+字符编码(十进制)+;
与Java不同的是,javaScript中有“== =”全等于和 “!==”全部等于,javaScript中的 ==可以进行不同数据类型的对比, 不受数据类型的影响,而全等于考虑到了数据类型的不同情况。
prompt();函数
该函数可以弹出一个提示框,该提示框中会有一个文本框,用户可以在这个文本框中输入一段内容,该函数需要一个字符串作为参数,该字符串作为提示框的提示文字
用户输入的内容将作为函数的返回值返回,我们可以定义变量来接受这个返回值
JavaScript对象的初步认识
JavaScript对象跟java中的对象稍微有些不同,在我看在,java中的对象创建稍微严谨一些,java在创建对象之前,需要创建这个对象的类,然后通过这个类来创建相对应的对象,这一个对象的属性在创建类的同时已经封装好了,只要创建处对象,该对象就已经拥有了相应的属性;但是JavaScript稍微有点不同,JavaScript中先创建对象,然后再给对象通过点运算添加属性,这样的好处是应变能力强,能做到随时添加,但是没有封装的效果,相对来说比较乱。
JavaScript中,创建的number属性的值之间是独立的,互不影响。
var a = 123;
var b = a;
a++;
console.log("a = "+ a);
console.log("b = "+ b);
输出结果:
"a = 124"
"b = 123"
JavaScript中,创建对象,如果将两个对象联系在一起,改变其中一个变量,则会影响到另一变量。
var obj = new Object();
obj.name = "hzt";
var obj2 = obj;
obj.name = "zph";
console.log(obj.name);
console.log(obj2.name);
结果:
“zph”
“zph”
这就是JavaScript中基本数据类型的与引用数据类型的的区别。
JavaScript中的基本数据类型直接储存在栈内存中,对象储存在堆内存中。
对象字面量
创建一个对象
var obj = new Object();
使用字面量来创造对象
var obj = {}; //{}就是对象字面量
对象中的属性也可以是一个对象,这个跟java不同,java的对象一般把一个对象写在另一个对象里面,而JavaScript不同,类似于对象之间的嵌套但又不是嵌套,我简单的理解为一个对象拥有另一个对象,举个例子:一个人,他有一部手机,这个人是一个对象,然而这个人所拥有的手机也是一个对象,属于归属关系。
函数
函数也是一个对象,函数可以封装一些代码(功能),在需要时可以执行这些代码。
封装的代码不会立即执行,而是在函数被调用的时候执行
调用函数的语法: 函数对象();
- 使用构造函数创建函数
var fun = new Function("console.log('content')");
fun(); //调用函数对象,执行封装代码
结果:
“content”
我们在开发的时候基本上不使用构造函数来创造一个函数对象
- 使用函数声明来创造函数对象
语法:
function 函数名(形参1,形参2,形参3){
语句块;
}
调用方法:
函数名(参数); //有参数要添加相对应的参数,没有参数就不写
- 使用函数表达式来创造函数
var 函数名 = function(形参1,形参2){
语句块;
};
匿名函数赋值给一个对象