今天是刘小爱自学Java的第80天。web
感谢你的观看,谢谢你。编程
话很少说,开始今天的学习:数组
JavaScript是一门编程语言,但凡是编程语言,其在基本语法上都是大同小异的。编程语言
咱们学了Java,那么再学习其它语言时,学它不一样于Java的地方便可,这样也能更好地记忆。编辑器
好比加减乘除,取模,自增自减这些,和Java都是同样的。函数
但js中的运算也有和Java的不一样之处;学习
①变量之间的运算测试
在js中,不一样数据类型之间的变量也能参与运算。flex
100和true相加结果居然是101,这个在Java中会直接报错的,由于不肯定结果是什么数据类型。url
因此在js中,true参与运算时就至关于数字1,同理false就至关于数字0,null也是至关于数字0
②undefined类型参与运算
变量c没有定义,因此是未定义类型,当其参与运算时获得的结果为NaN。
未定义类型和非字符串任意类型运算时,获得的结果都是NaN。
NaN,全称not a number,也就是否是一个数字。
③string类型参与运算
这个和Java中却是同样,任意类型和string类型相加时,结果都是拼接。
可是String在Java里面是引用数据类型,而在js里面是基本(原始)数据类型。
关于逻辑运算符:与(&&)、或(||)、非(!)和Java中是同样的。
但在js中的逻辑判断与Java有些不一样:
①布尔表达式
这个也就和Java中同样,逻辑判断为true时结果为真,逻辑判断为false时结果为假。
②数字做为布尔表达式
在js里面,数字也有本身的逻辑判断:
当数字不为0时,逻辑判断为true;
当数字为0时,逻辑判断为false。
③字符串做为布尔表达式
当字符串不为空时,逻辑判断为true;
当字符串为空时,逻辑判断为false。
此外,未定义数据类型逻辑判断也为false,在算术运算中的NaN做为逻辑判断时也为false。
我就不一一演示了。
其中js中的赋值运算符(=、+=、-=、*=、/=、%=)和Java中同样。
比较运算符(==、!=、<、<=、>、>=)也和Java中同样,但js有两个个特殊的比较运算符:
①字符串与数字比较
在js中,字符串也能参与比较,会先将其转换成数字再进行比较。
==,等于,比较的是值是否相等。
===,恒等于,比较的是值和类型均相等。
②null与未定义比较
一样的道理,它们的值相等,都为null,可是类型不同,因此不恒等于。
也就是Java中的三元运算符。
js中的函数其实也就是Java中的方法。
①Java中的方法
作一个回顾,Java方法格式:修饰符+返回值+方法名+(参数列表)+{方法体};
其中参数列表中要明确数据类型。
②js中的函数
js函数格式:fuction+方法名(参数列表){};
js中不只没有修饰符,连返回值都没有,而且参数列表的数据类型不用明确。
由此能够看出:js的语法相对于Java而言较为随意,不像Java那么严谨,但确实简便了不少,方便学习。
Java中形参与实参要明确保证一致(数量、数据类型都要保证一致)
可是js中能够不一致,咱们逐一分析:
①实参与形参数量不一致
实参与形参的关系至关于将实参的值赋给形参。
当实参比形参要少时:a=1;b=2,可是c未定义。
在js中任何数据与未定义的变量相加都是NaN。
当实参和形参同样或者多时,结果没有影响,多的实参不参与运算便可。
②形参和方法体中的变量不一致
若是方法体中的变量要少,有几个就用几个。
若是方法体中的变量要多,多了一个形参中没有的变量d,则没法运行。
这个Java中却是有必定的类似之处。
事实上在js中有一个专门的数组arguments,用来接收调用时的实际参数:
js中的数组是可变的,因此可使用这种方式来接受,固然也可使用for循环来处理。
不过要注意的是,js中可没有加强for循环。
老实说,对于arguments这个概念,其实也就至关因而实际参数,知道在js中有它的存在便可。
我我的对于实参和形参的理解,就是将实参赋值给形参再参与运算,这样方便记忆也好理解。
①返回值
js在定义函数时是不用说明返回值的,若是有返回值,直接return便可。
②方法(函数)重载
在Java中是有方法重载(同名不一样参)
可是在js中是没有方法重载的。
这也好理解,在Java中参数类型不一样,个数不一样即表明不一样的参数。
可是在js中参数类型都没有明肯定义,因此也无法区分参数不一样,而且实参个数与形参个数没有关系。
其中,js代码是从上到下执行的,同名函数,后面的函数会覆盖前面的函数。
①函数内测试局部变量
函数内部,局部变量和全局变量均可以访问。
②函数外测试全局变量
在函数外部,局部变量是不能被访问的,可是全局变量能够访问。
③另外一个script标签
和函数外部同样的道理,经过②③咱们能够得出结论:变量c是一个全局变量。
事实上,当局部变量省略了var的时候,会变成全局变量。
为何会这样?画图分析:
也就是说实际上变量c省略了var,就至关于默认在外部定义了var c,再在函数内赋值。
固然其前提是该变量没有在函数内被定义,若是变量c在函数内定义过了,那它就是个局部变量。
④测试思考
我发现明明a,c都是全局变量,a,c中间加了一个b后,c就不能打印了。
也就是说外部是无法引用局部变量的,会报错。
可是js中报错了照样能运行,只是当前标签内后面的代码就不执行了。
谢谢你的观看。
若是能够的话,麻烦帮忙点个赞,谢谢你。
本文使用 mdnice 排版