今天是刘小爱自学Java的第80天。

感谢你的观看,谢谢你。

话不多说,开始今天的学习:

JavaScript是一门编程语言,但凡是编程语言,其在基本语法上都是大同小异的。

我们学了Java,那么再学习其它语言时,学它不同于Java的地方即可,这样也能更好地记忆。

一、js中的运算符

1算术运算符

无外乎就是加减乘除,取模,自增自减这些,用法和Java中都是一样的。

但js中的运算也有和Java的不同之处;

①变量之间的运算

在js中,不同数据类型之间的变量也能运算。

100和true相加结果竟然是101,这在Java中会直接报错,因为不确定结果是什么数据类型。

所以在js中,true参与运算时就相当于数字1,同理false就相当于数字0,null也是相当于数字0

②undefined类型参与运算

变量c没有定义,所以是未定义类型,当其参与运算时得到的结果为NaN。

未定义类型和非字符串任意类型运算时,得到的结果都是NaN。

NaN,全称not a number,不是一个数字。

③string类型参与运算

这个和Java中倒是一样,任意类型和string类型相加时,结果都是拼接。

但是String在Java里面是引用数据类型,而在js里面是基本(原始)数据类型。

2逻辑运算

关于逻辑运算符:与(&&)、或(||)、非(!)和Java中是一样的。

但在js中的逻辑判断与Java有些不同:

①布尔表达式

这个也就和Java中一样,逻辑判断为true时结果为真,逻辑判断为false时结果为假。

②数字作为布尔表达式

在js里面,数字也有自己的逻辑判断:

当数字不为0时,逻辑判断为true;

当数字为0时,逻辑判断为false。

③字符串作为布尔表达式

当字符串不为空时,逻辑判断为true;

当字符串为空时,逻辑判断为false。

此外,未定义数据类型逻辑判断也为false,在算术运算中的NaN作为逻辑判断时也为false。

我就不一一演示了。

3比较运算符

其中js中的赋值运算符(=、+=、-=、*=、/=、%=)和Java中一样。

比较运算符(==、!=、、>=)也和Java中一样,但js有两个个特殊的比较运算符:

①字符串与数字比较

在js中,字符串也能参与比较,会先将其转换成数字再进行比较。

==,等于,比较的是值是否相等。

===,恒等于,比较的是值和类型均相等。

②null与未定义比较

同样的道理,它们的值相等,都为null,但是类型不一样,所以不恒等于。

4三目运算符

也就是Java中的三元运算符。

二、js中的函数

1函数定义

js中的函数其实也就是Java中的方法。

①Java中的方法

做一个回顾,Java方法格式:修饰符+返回值+方法名+(参数列表)+{方法体};

其中参数列表中要明确数据类型。

②js中的函数

js函数格式:fuction+方法名(参数列表){};

js中不仅没有修饰符,连返回值都没有,并且参数列表的数据类型不用明确。

由此可以看出:js的语法相对于Java而言较为随意,不像Java那么严谨,但确实简便了很多。

2实参和形参

实参:调用函数时的参数(传入的具体数值)。

形参:定义函数时的参数(自定义的变量)。

Java中形参与实参要明确保证一致(数量、数据类型都要保证一致)

但是js中可以不一致,我们逐一分析:

①实参与形参数量不一致

实参与形参的关系相当于将实参的值赋给形参。

当实参比形参要少时:a=1;b=2,但是c未定义。

在js中任何数据与未定义的变量相加都是NaN。

当实参和形参一样或者多时,结果没有影响,多的实参不参与运算即可。

②形参和方法体中的变量不一致

如果方法体中的变量要少,有几个就用几个。

如果方法体中的变量要多,多了一个形参中没有的变量d,则无法运行。

这个Java中倒是有一定的相似之处。

3参数arguments

事实上在js中有一个专门的数组arguments,用来接收调用时的实际参数:

js中的数组是可变的,所以可以使用这种方式来接受,当然也可以使用for循环来处理。

不过要注意的是,js中可没有增强for循环。

老实说,对于arguments这个概念,其实也就相当于是实际参数,知道在js中有它的存在即可。

我个人对于实参和形参的理解,就是将实参赋值给形参再参与运算,这样方便记忆也好理解。

4返回值和方法重载

①返回值

js在定义函数时是不用说明返回值的,如果有返回值,直接return即可。

②方法(函数)重载

在Java中是有方法重载(同名不同参)

但是在js中是没有方法重载的。

这也好理解,在Java中参数类型不同,个数不同即代表不同的参数。

但是在js中参数类型都没有明确定义,所以也没法区分参数不同,并且实参个数与形参个数没有关系。

其中,js代码是从上到下执行的,同名函数,后面的函数会覆盖前面的函数。

5局部变量和全局变量

①函数内测试局部变量

函数内部,局部变量和全局变量都可以访问。

②函数外测试全局变量

在函数外部,局部变量是不能被访问的,但是全局变量可以访问。

③另一个script标签

和函数外部一样的道理,通过②③我们可以得出结论:变量c是一个全局变量。

事实上,当局部变量省略了var的时候,会变成全局变量。

为什么会这样?画图分析:

也就是说实际上变量c省略了var,就相当于默认在外部定义了var c,再在函数内赋值。

当然其前提是该变量没有在函数内被定义,如果变量c在函数内定义过了,那它就是个局部变量。

④测试思考

我发现明明a,c都是全局变量,a,c中间加了一个b后,c就不能打印了。

也就是说外部是没法引用局部变量的,会报错。

但是js中报错了照样能运行,只是当前标签内后面的代码就不执行了。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

java 80_【JavaWeb】80:js基础详解相关推荐

  1. javaWeb(入门基础详解)

    Servlet     1,servlet介绍         servlet是一项动态web资源开发技术.         运行在服务器端.         作用:处理业务逻辑,生成动态的内容,返回 ...

  2. Java中的类(基础详解)

    文章目录 可以有多个类,但只能有一个public类 类 = 字段+方法 类的构造函数 我们没写构造函数的时候 如果我们自己写了构造函数 构造函数中 this 的使用 类的修饰符 / 控制符 第一类:= ...

  3. Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!

    文章目录 1.网页查看 2.有道翻译简单实现源码 3.JS解密(详解) 4.python实现JS解密后的完整代码 4.1.实现效果 5.JS解密后完整代码升级版 5.1.实现效果 CSDN独家福利降临 ...

  4. java无限循环小数_java基础——java无限循环小数判定问题以及BigDecimal详解

    java基础--java无限循环小数判定问题以及BigDecimal详解 rtk   jmp   目录   big   get   无限循环   style   无限 罢谮烈糜讼市智猩昧锥父兹登htt ...

  5. JavaWeb中filter的详解及应用案例

    JavaWeb中filter的详解及应用案例 转载自:http://www.cnblogs.com/vanl/p/5742501.html 一:Filter介绍 Filter可认为是Servlet的一 ...

  6. Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)

    Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) 本文目录: 一.[旋转的精灵女孩]案例运行效果 二.Three.js简介 三.Three.js代码正常运行显示条件 (1)不载入 ...

  7. html入门基础(详解)

    html入门基础(详解) 一.HTML 1.HTML:是一种用于创建网页的超文本标记语言(Hyper Text Markup Language) "超文本"就是指页面可以包含图片, ...

  8. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结

    ​​​​​蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...

  9. 【转帖】windows命令行中java和javac、javap使用详解(java编译命令)

    windows命令行中java和javac.javap使用详解(java编译命令) 更新时间:2014年03月23日 11:53:15   作者:    我要评论 http://www.jb51.ne ...

最新文章

  1. 设计模式(七):桥接模式
  2. java调用python库pyd_Java调用Python的两种方式
  3. [ZT]firefox实现ie的方法和属性)
  4. tigervnc远程控制linux,CentOS 6.8 安装TigerVNC 实现 Linux 远程桌面
  5. jetbrains-docker插件文档
  6. Python之数据分析(动画效果、animation模块、气泡动画)
  7. vs2008上QT中增加智能提示功能
  8. python入门指南txt-BeginnersGuide
  9. Redis基础--使用treeNMS管理及监控Redis
  10. 算法设计与分析 —— 排列问题
  11. 关于23届大数据岗实习总结
  12. uniapp快速入门开发
  13. 30s快速开通微商城,零售+分销结合,支持直播美颜
  14. Procmon监控软件使用教程
  15. 科研中常用的计算机应用软件,研究生的日常软件(文献类软件使用介绍及心得)...
  16. redis如何清空缓存
  17. 艾永亮:流量,营销,爆款连连失效,餐饮业如何逃离三年倒闭的魔咒?
  18. 如何防止网站过度优化,网优谷给你解答
  19. 中科院发布国产开源高性能RISC-V处理器“香山”,对标ARM-道合顺大数据infinigo
  20. Sklearn : train_test_split()函数的用法

热门文章

  1. 反应灵敏且性能卓越的Spray + Akka解决方案,以“在Java和Node.js中发挥并发性和性能”...
  2. JDK 8功能的可疑方面
  3. 使用Google GSON:额外的赠品:第二部分
  4. c语言结构体定义字符串数组,C语言,结构体中字符串的声明(采用字符指针还是字符数组)...
  5. 40无法u盘启动_戴尔主板bios设置u盘启动 戴尔台式电脑如何bios设置U盘启动教程...
  6. Pytorch机器学习/深度学习代码笔记
  7. 数据结构铁轨问题_每天5分钟用C#学习数据结构(20)图 Part 1
  8. 0与1世界的初级编程篇之C语言
  9. docx 图片预处理 Java_如何在java中将docx文件头图像复制到另一个docx文件中
  10. php伪静态后不能访问html,php伪静态后html不能访问怎么办