1.js基于对象,而Java是面向对象。js和Java是两门不同的语言

面向对象,也就是对象和程序分离,程序可以操纵对象,程序独立与对象。

基于对象,也就是对象已经有了,程序在它的基础上才能执行,没有对象,就没有这个程序。

2.js可以内嵌到HTML中,代码不需要像C或者Java那样先编译后执行,而是直接在浏览器读一行,执行一行,后面的代码有bug,不会影响前面的代码的执行。

3.js的数据类型有五种:boolean,number,string,object,undefined

boolean:和C一样。值得注意的是,非零为true,零为false

number:所有数值都是number类型,没有int ,double之类的

string:字符串类型,s小写,没有char类型

object:所有引用类型都是object类型

undefined:当一个变量定义了,但未赋值,就是undefined

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function f1(){
var a = true;
alert(typeof(a));//boolean
a = 1;
alert(typeof(a));//number
a = 1.2;
alert(typeof(a));//number
a = '11';
alert(typeof(a));//string
a = [1,2];
alert(typeof(a));//object
var b;
alert(typeof(b));
}
f1();
</script>
</head>
<body>
</body>
</html>

3.js是弱类型语言,但其实并不弱

(1)前面定义过的变量,后面可以重用为不同的类型

function f2(){
var a = 1;
alert(a);//1
a = 'abc';
alert(a);//abc
a = true;
alert(a);//true
}

(2)多个脚本段之间的变量是可以共用的,也就是全局变量。而function( )内的变量是局部的

<script type="text/javascript">
var i = 1;
</script>
<script type="text/javascript">
alert(i);//1
</script>

(3)一个变量,可以不声明直接赋值使用。也可以不赋值直接使用(会是undefined)。但是不声明也不赋值就会挂

<script type="text/javascript">
function f3(){
a = 2;
alert(a++);//3
var b;
alert(b);//undefined

alert(c);//这个不会执行,挂了
}
f3();
</script>

(4)与Java不同,JS小数也可以++,--,字符串也可以自动转换为number

<script type="text/javascript">
function f1(){
var a = 3.1;
alert(++a);//4.1

var b = false;
alert(++b);//1
b = true;
alert(++b);//2

c = '12';
alert(c-2);//10

alert(20-c);//8
}
f1();
</script>

(5)关注‘=’和‘==’

有个易犯的错误就是if(a=-1){...}不管a是什么,花括号里面的代码一定会执行的。因为-1赋值到a中了。

正确的写法是if(-1==a){...}一些公司直接规定数值写前面,这样误写成‘=’就会报错,不会有这个bug了。