JavaScript基本语法
学习要类比的学习,下面的内容是和java对比进行学习记录的
1.字符串string
java中用双引号引起来的文本内容是字符串;
javascript 中用单引号,双引号引起来的文本内容为字符串;
都可以使用+号进行拼接(在拼接的数据类型中只要有一个是string的话,+的作用就是连接的作用)
2.一行代码的结束
java中是以分号表示代码的结束的;
javascript中是以分号或者回车换行表示代码的结束的;所以在javascript中不能随便的敲击回车键;
3.数值类型number
整数,正数,负数,小数
java中数值类型的定义就多了,int long float double;
javascript中就只有数值类型number
NaN:是表示一个数值的不正常状态;可以通过一个关键字进行判断 IsNaN:是否为非数字;
4.查看数据的类型typeof
有两种写法,带括号和不带括号;
typeof(“aaa”);
typeof “vvvv”;
5.变量var
定义一个变量,并赋值;
var a;
var b;
a="nihao";
b=123;
typeof(a); //可以同typeof打印变量的数据类型;其实你存的是什么类型打印结果就是什么类型的;
6.boolean数据类型
var a = false;
var b=true;
7.undefined 未赋值类型
var a;
表示 声明了变量,但是没有给赋值,则在使用的时候会出现undefined这个提示;
8.算术运算符
和java都一样的;+-*/ %
复杂的数据运算:Math对象;
9.逻辑运算符
&& || 和java也是一样的;
优先级顺序:!>&&>||
10.比较运算符
其他和java一致,但是下面的就不一样了;
==(判断内容是否相等,但是不判断数据类型)
var a="10";
var b=10;
var c=a==b; 结果是true;
但是boolean就不同了,在真是内存中boolean的存储是0或者1;
var a= false;
var b="false";
var c= a==b; 结果是false;
===(判断内容,也会判断数据类型)
var a=2;
var b=2;
var c =a===b 结果是true;
但是注意NaN:
var a=NaN;
var b=NaN;
var c =a===b 结果是false;
同理:
!= 只判断内容;
!== 判断内容也会判断数据类型;
11.数据类型转换
11.1 string to number
var a="100";
var b=Number(a); 则b的数据类型为number;
11.2
可以是boolean (true会转成1,false会转成0),小数
11.3 转换非数字的字符串
会返回NaN;
11.4 转换一个空字符串
会返回0;
12.其他几种类型转换的方法
12.1 parseInt(String);
转成整数;
省略小数部分;
不会四舍五入;
也可以转换第一个字符为数字,知道转到不是数字的位置;例如:222adb,也会转成222;12.32aaabb22 --》12;
12.2 parseFloat(string)
和parseInt基本一样,只不过会保留小数部分;
13.number 转string
var a=100;
var b =a.toString();//b的数据类型为string;
var c= String(a);//c的数据类型也是String;
13.数据类型的隐式转换
13.1 数字类型的字符串,通过+-*/可以隐式改变数据的类型;前提是必须是数字的字符串;
13.2 将数字 +“” 就可以转换成字符串类型;
13.3 隐式转换成boolean类型;
var a=100;
var b = !a; //b就是false了
var c = !!a; //c就是true了;
14.if_else 逻辑判断和java是一模一样的;
15. switch_case 逻辑匹配和java也是一模一样的;
16.三元运算符(三目运算符)也是一样的 a>b ? false:true;
17.while,do_while 循环和java也是一样的
18.for循环
for(var i=1;i<100;i++){
要循环的内容;
}
19.object对象
var obj=new Object();
obj.xingming="zhangsan";
obj.age=18;
object相当于一个java中bean对象;只不过不用去定义成员变量,在使用的直接临时定义就可以了;
20. 数组array
var arr=new Array();
arr[0]="hahah";
arr[1]=199;
数组对象是 不区分数据类型的;
21.函数使用的两种方式;
21.1 函数的声明:
function 函数名(参数1,参数2){
var aa = 参数1 + 参数2;
return aa;
}
21.2函数的表达式:(匿名函数)
在JavaScript中函数是一种数据类型,可以通过一个变量来接受这个函数;
所以函数也可以作为函数参数传递:
var f1 = function (a,b){
return a+b;
}
function getResult(a,b,fn){
return fn(a,b);
}
var result = getResult(1,2,f1);
// var result = getResult(1,2,function(a,b){
// return a+b;
// });
console.log("执行返回的结果:"+result);
但是在java中函数不是一种数据类型;
var aaa = function(x,y){
return x+y;
}
//调用
aaa(1,2);
如果通过typeof获取一个函数的类型
typeof(aaa);//function
这两种的区别在代码的执行顺序上:
在JavaScript的预解析过程中会把var 定义的变量和function定义函数提前到作用域的最上面;赋值不提前;
<script type="text/javascript">
//javascript的预解析过程中
var a;
function jixuan(a){
console.log(a);
}
a=100;
jixuan(a);
//下面的代码在预解析过程中会变成上面的代码过程;只提前变量的定义和函数的定义;
//在函数内部的作用域也会进行预解析过程;
// var a=100;
// jixuan(a);
// function jixuan(a){
// console.log(a);
// }
//预解析过程
function f1() {
//在函数内部预解析的时候发现只声明了一个局部变量a,而bc都是没有通过var声明的,则是全局的变量;
var a;
a=b=c=100;
console.log(a);//100
console.log(b);//100
console.log(c);//100
}
f1();
console.log(b);//100
console.log(c);//100
console.log(a);//undefined
// f1();
// function f1() {
// var a=b=c=100;
// console.log(a);
// console.log(b);
// console.log(c);
// }
//
// console.log(b);
// console.log(c);
// console.log(a);
</script>
22.JavaScript中没有函数重载这个概念
如果函数名一样的话,会覆盖;不能定义同名的函数(不是绝对的);
23.变量的作用域:
全局作用域;
在script标签下定义的变量,全局可以使用;
局部作用域;
在函数内部定义的变量,只能在函数内部使用的;
在函数内部不使用var生面的变量,就是全局变量,但是这样不推荐使用,在定义变量的时候都要是使用var来声明;
和java的变量的作用域几乎是一样的;
24.JavaScript中没有块级作用域:
在java中有块级作用域的,例如;判断 if{},在这个大括号中定义的变量,外部是不能方法的;
在javascript中if{} ,在大括号中定义的变量是在外部是可以访问的;相当于全局变量的了
25. 递归
和java一样,函数自己调用自己;
26.异常的捕获;
和java一样
try{
console.log(adc)
}catch(e){
console.log("出现异常了")
console.log(e.message)//adc is not defined
}