js与java语法的区别对比

 
数据类型的不同
js常见的数据类型有 ,Number ,bool,null,undefine,string  对象有 object  function  数组   (函数和数组都是特殊的对象)    
js中的对象是用于存储数据的  函数是特殊的对象有对象的特性但是可以执行  数组也是特殊的对象里面的数据有序
js中对象的写法
var obj ={
   name:"wanwan";
   age:18
}
数组的写法:
var a=[
    
]

 

 
 
变量的赋值方式不同
Js中声明变量的时候不用提前声明是什么类型的变量
var  a   a被赋予什么值就是什么类型的变量  如果没有赋予就是undefine
Java中需要需要先声明什么类型的变量   什么类型的变量赋什么类型的值
 
Java中明确规定:
1、如果是引用型的,比如:String,还有类对象,他们的默认值都是:null;
2、而如果是值类型:double,int,long,float,char等等,他们都是:0;
Boolean false
Char '\u0000'(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
 
 
 
类型判断方式不同
typeof  返回基本类型的字符串表达式    不能判断 null 数组  (会被判断成object)
instanceof  对象  只能判断对象的类型(和java一样)
===也可以判断数据的类型     ===判断null 和undefine (看举例)
Java中也有
instanceof 用它来判断某个对象是否是某个 Class 类的实例。
// Numbers
typeof 37 === 'number';
typeof 3.14 === 'number';
typeof Math.LN2 === 'number';
typeof Infinity === 'number';
typeof NaN === 'number'; // 尽管NaN是"Not-A-Number"的缩写
typeof Number(1) === 'number'; // 但不要使用这种形式!
// Strings
typeof "" === 'string';
typeof "bla" === 'string';
typeof (typeof 1) === 'string'; // typeof总是返回一个字符串
typeof String("abc") === 'string'; // 但不要使用这种形式!
// Booleans
typeof true === 'boolean';
typeof false === 'boolean';
typeof Boolean(true) === 'boolean'; // 但不要使用这种形式!
// Symbols
typeof Symbol() === 'symbol';
typeof Symbol('foo') === 'symbol';
typeof Symbol.iterator === 'symbol';
// Undefined
typeof undefined === 'undefined';
typeof declaredButUndefinedVariable === 'undefined';
typeof undeclaredVariable === 'undefined';
// Objects
typeof {a:1} === 'object';
// 使用Array.isArray 或者 Object.prototype.toString.call
// 区分数组,普通对象
typeof [1, 2, 4] === 'object';
typeof new Date() === 'object';
// 下面的容易令人迷惑,不要使用!
typeof new Boolean(true) === 'object';
typeof new Number(1) === 'object';
typeof new String("abc") === 'object';
// 函数
typeof function(){} === 'function';
typeof class C{} === 'function'
typeof Math.sin === 'function';
typeof new Function() === 'function';

 

 
=== == 的区别    
==== 可以不会转换类型(类型不同直接为false)    == 会自动转换类型(类型不同,先转类型再比较)
操作数 1 == 操作数 2    操作数 1 === 操作数 2
比较过程:
  双等号 ==  
  ( 1 )如果两个值类型相同,再进行三个等号 (===) 的比较
  ( 2 )如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:
     1 )如果一个是 null ,一个是 undefined ,那么相等
     2 )如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较
  
  三等号 ===:
  ( 1 )如果类型不同,就一定不相等
  ( 2 )如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是 NaN ,那么不相等。(判断一个值是否是 NaN ,只能使用 isNaN( ) 来判断)
  ( 3 )如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
  ( 4 )如果两个值都是 true ,或是 false ,那么相等
  ( 5 )如果两个值都引用同一个对象或是函数,那么相等,否则不相等
  ( 6 )如果两个值都是 null ,或是 undefined ,那么相等
 
 
 
数据类型与变量类型
数据类型和变量类型的区分:(角度不同)
数据类型:(存储是数据还是数值)
  基本类型
  对象类型
注意:
其实基本类型可以简单的理解为存数值的             对象是存数据的
 
变量类型 (存储的实实在在的数值还是地址)
  值类型
  引用类型
注意:
把数据和变量区分开来  变量是没有类型的  变量类型是指变量所指的数据(变量值)的类型
 
null undefined 的区别:
null定义并且赋值了:1,用于表面某个变量将会赋值为对象 2. 把对象清空方便回收
undefined定义了没有赋值:1.没有赋值的变量
 
Java中明确规定:
1、如果是引用型的,比如:String,还有类对象,他们的默认值都是:null;
2、而如果是值类型:double,int,long,float,char等等,他们都是:0;
一个变量作为类成员使用的时候,如果没有被初始化, java会为其分配默认值:
Boolean false
Char '\u0000'(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
如果在一个方法中定义一个变量, java不会给其分配默认值,就必须我们来给他初始化,否则将得到编译错误的提示;
 
 
函数的区别:
js中函数调用的方式:
1.直接调用
2.函数在对象中通过对象.函数来调用
3.如果函数没有在对象中也可以使用某个对象临时调用
    写法  :
  1. new 的方式 构造函数  test.apply/call(obj)
函数一般都要通过对象来执行 默认是window
每个函数都有一个this变量:  表示的是调用函数的对象
 
 
如何确定this值:
test()  window
new test()   新创建的对象
p.text()  p对象
p.call(obj)  obj对象
 
回调函数:
什么是回调函数:
我声明了没有调但是执行了
常用的回调函数:
1.dom事件回调函数  点击  失去焦点
2.定时器:延时,循环
3.ajax请求回调函数
4.生命周期回调函数
 
 
 
 
 
其他;
1.java指定什么类型的变量只对什么类型的数据
但是js中没有对变量进行分类都是var   这变量可以只对任何内容
2.java中的null表的范围是js中null加undefined
3.number表示虽有数字 (整型·浮点型)  string在java中是对象  而js中是基本类型
4.java中的对象与js中的对象可以类比 不过js中函数也是对象  数组也是特殊的对象
5. js 代码可以不用写分号(也可以写
6. js java 不同的一定在于   js 即使对象中没有的属性  也可以后期同时添加属性和属性值      
 
var p={}
p.name=‘高旦朋’  这样是可以的
 
 
 
java与js类比:
之前我们学习的js和javaSe有点像:语法类似 ,功能上也就是操作界面
有了nodejs以后和javaEE有点像     nodejs有点类似jre
Js 中的对象可以类比   java 中类,  函数可以类比 java 中的方法,  变量可以类比类中的属性
7. 每个函数都有自己的原型对象,函数有原型对象的属性和方法       有点像java中的接口
函数对象通过某个属性来指向原型对象(prototype)  原型对象也有某个属性来指向函数?????construct?? ?
函数中有个属性是prototype 指向原型对象
 
js域java语法的区别对比
 

你可能感兴趣的:(前端)