由于是从java做到JavaScript,所以对强弱语言类型,还是比较敏感的。JavaScript是弱语言,只严格区分数据和指令。简单描述下自己对两者之间的一些区别吧。

  1、JavaScript变量的类型取决于右侧的对象。

JavaScript:

var variable_name = new Object();

Java:

Object variable_name = new Object();

  2、JavaScript没有块级作用域,

Java:

if(true) {
Object a = 1;
}
System.out.println(a); // 编译错误,超出作用域

JavaScript:

if(true){
var a = 1;
}
console.log(a); // 1 JavaScript没有块级作用域

而JavaScript的作用域一般体现在函数作用域上。

  3.比较特别的是JavaScript会把声明提前,像这样

function test() {
console.log(a); // 输出undefined,而不是变量not defined,说明函数声明提前了,但是初始化没提前,所以输出的不是1
var a = 1;
}
test(); function test2(){
var a = 1;
if(true) {
console.log(a); // 输出也是undefined,而不是1
var a = 2;
}
}
test2();

  4.JavaScript没有像Java一样可以直接调用成员变量的语法,通常只能是:

var data = {'one':1,'two':2};
with(data) { // 模拟作用域,在use strict严格模式下会抛语法错误
console.log(one);// 输出 1
console.log(two);// 输出 2 }

  值得注意的是上面with使用的作用域内,只能对已有的属性进行操作,而不能创建新属性。同时在use strict模式下,还限制了arguments对象的callee和caller两个属性的使用,一用就会报错。之前接手的嵌入式web端有用setTimeout实现setInterval功能的,就是调用了callee,代表正在执行的方法,就好像接力棒一样,但明显这在严格模式下是无法使用的。

  5.在ECMAScript5的标准里多了一些函数式编程的方法,主要是Array对象的实例方法forEach、reduce,或者就是我们经常使用的回调,把函数作为参数传递的,跟高阶函数有点相似,但是没有返回函数。作为一个前端开发人员,对于下面这样的回调方法应该很熟悉

$.post('url:getData',function(data){
if(data) console.log(data);// 将函数作为参数传递进去,然后在post方法里面调用这个匿名函数
});

  6.JavaScript无法正确地表示0.1这样的简单小数,尽管在数值上已经非常接近,但在进行equals类似的操作时仍会出错,解决方案有将小数点左右两侧的数据分开来计算之后再合并。

JavaScript真是一门特别有魅力的语言,还有很多东西需要探索,自己给自己加加油 哈哈。

  

用Java来比较JavaScript的一些特性的更多相关文章

  1. Java 8 新特性-菜鸟教程 (7) -Java 8 Nashorn JavaScript

    Java 8 Nashorn JavaScript Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java ...

  2. javascript进阶——面向对象特性

    面向对象的javascript是这门语言被设计出来时就考虑的问题,熟悉OOP编程的概念后,学习不同的语言都会发现不同语言的实现是不同的,javascript的面向对象特性与其他具有面向对象特性的语言的 ...

  3. Java 面试知识点解析(四)——版本特性篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  4. Java9发布回顾Java 8的十大新特性

    java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...

  5. Java 8 Nashorn JavaScript

    转自:https://www.runoob.com/java/java8-nashorn-javascript.html Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Na ...

  6. 从 prototype.js 深入学习 javascript 的面向对象特性

    从 prototype.js 深入学习 javascript 的面向对象特性 js是一门很强大的语言,灵活,方便. 目前我接触到的语言当中,从语法角度上讲,只有 Ruby 比它更爽. 不过我接触的动态 ...

  7. javascript 的面向对象特性参考

    最近在看用javascript+css实现rich client.javascript 也是一个蛮有意思的语言.特别是其面向对象的实现和其他“标准”的OO launguage有很大的不同.但是,都是动 ...

  8. 深入理解JavaScript的闭包特性如何给循环中的对象添加事件

    初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件.在事件响应函数中(event handler)获取对应的索引.但每次获取的都是最后一次循环的索引.原因是初学者并未理解JavaScript ...

  9. 前端学习 第三弹: JavaScript语言的特性与发展

    前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...

随机推荐

  1. SQL GROUP BY 语句

    合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句. GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. SQL GROUP BY 语法 ...

  2. Linux 软链接和硬链接的理解与学习

    理解前提: 首先要知道 Linux任意一个文件包含2个信息:第一个信息就是文件本身存的内容,第二个信息是文件的控制信息(读写,路径,大小等等),这2个信息是分开存储的,明白这点非常重要 理解总结: L ...

  3. asp.net运行机制图

    (郑重提示:此图版权归广州传智播客老邹所有啊!!!!) 详细版

  4. [Mugeda HTML5技术教程之9]使用元件

    元件是一个可以在舞台上实例化和再利用的预先生成的独立动画.一个元件有它自己的时间轴(层,单位等),可以独立显示的动画.元件提高了动画的重用性和灵活性,是个强大的存在.元件可用于创建复杂的动画效果. 所 ...

  5. PHPExcel用法有感

    今日项目需求导出excel.我用最简单的header头方式导出了,但是需求部门退回了,说不满足他们的需求,需要我按照他们的模板来导出. 然后想到了PHPExcel,没用过,走了不少弯路. 1.去官网下 ...

  6. 解决div里面img的缝隙问题~

    解决div里面img的缝隙问题 图片IMG与容器下边界之间有空隙怎么办?这里介绍3中简单的解决方法. 第一,给图片img标签display:block. img{display:block} 第二,定 ...

  7. openpyxl

    openpyxl库的使用,这个处理xlsx还是挺有用的 ref:传送门 from openpyxl import Workbook from openpyxl import load_workbook ...

  8. AFNetworking 使用总结 (用法+JSON解析)

    « AFNetworking 图片的本地缓存问题 Get application bundle seed ID in iOS » AFNetworking 使用总结 (用法+JSON解析)    Fr ...

  9. Detecting an Ajax request in PHP

    1:index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  10. Ubuntu12.04 下修改Apache端口号

    1:$sudo vim /etc/apache2/ports.conf NameVirtualHost *:80Listen 8090 #将此行的80修改成8090 2:sudo vim /etc/a ...