由于是从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. grunt之入门实践

    grunt 是基于nodejs的前端项目管理工具,凭借着大量优秀的插件从众多前端项目管理工具中脱颖而出. 确保先安装了nodejs 为了方便使用Grunt,应该在全局范围内安装Grunt的命令行接口( ...

  2. 第1章 网络编程基础(4)——TCP/IP通信

    TCP协议利用网络层IP协议提供不可靠的通信服务,解决分组的重传和排序问题,为应用程序提供可靠的.端到端的.面向连接的基于字节流的服务. 对等TCP传输实体间的通信具有如下特征: 全双工 只支持两个端 ...

  3. 让Mac OS X中的PHP支持GD

    GD库已经是近乎于是现在主流PHP程序的标配了,所以也必须让Mac OS X中的PHP支持GD.在网上搜索了好多,最终按照这个方式成功实现,如何让Mac OS X支持PHP,请查看<让PHP跑在 ...

  4. 关于mobiscroll插件的使用

    在网上找了很多资料,各大猿友对这个插件都做了很详细的介绍,我也是看了很多资料才发现原来这个插件有一些需要注意的地方,在这总结了一下: //时间 var currYear = (new Date()). ...

  5. LeetCode_Minimum Window Substring

    Given a string S and a string T, find the minimum window in S which will contain all the characters ...

  6. ASP.ENT中上一篇和下一篇

    前台页面:<div class="mtgz_prev_next">    <p>        <span class="textcolor ...

  7. OOP(面向对象编程)的一些特性

    接口:接口是把公共实例(非静态)方法和属性结合起来,以封装特定功能的一个集合.一旦定义了接口,就可以在类中实现它.接口注意事项:接口不能单独存在.不能像实例化一个类那样实例化接口.另外,接口不能包含实 ...

  8. 外部函数接口 LibFFI

    “FFI” 的全名是 Foreign Function Interface,通常指的是允许以一种语言编写的代码调用另一种语言的代码.而 “Libffi” 库只提供了最底层的.与架构相关的.完整的”FF ...

  9. TaintDroid:智能手机监控实时隐私信息流跟踪系统(四)

    6      应用程序研究 款流行的应用程序是怎么使用用户敏感数据的.选取的应用程序可以根据相应的权限通过Internet获得各种各样的用户数据.我们研究发现三分之二的这些数据暴露了用户详细的地理位置 ...

  10. OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程

    OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程 OpenJTAG与JLink的区别比较: 相同点:都同时具备USB转JTAG.USB转串口功能 差别: 1. 操作系统: O ...