码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript基础入门教程(一)

时间:2018-01-24 22:07:30      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:java   影子   语言   define   blog   col   nan   als   数值   

js的数据类型

  虽然js属于弱类型语言,但其总共有6种数据类型。弱类型的意思是定义的变量没有类型的区分,比如先执行 var num=123; 定义了一变量num存储整数,可接下来执行 num="hello world"; 将字符串赋值给num变量并不会报错,是合法的。

  js的弱类型相对于强类型的语言来说看起来好像很好用,其实也不尽然,下面列举了一些字符串和整数进行操作时候的一些因为js的弱类型带来的问题。

32 + 32 // 结果是 64
"32" + 32 // 结果是 "3232"
"32" - 32 // 结果是 0

/*
值得一提的是基于上面的一些问题,这里出现了两个类型转换技巧
字符串转整数:num - 0;
整数转字符串:num + ‘‘;
*/

 

js中的六种数据类型

  原始类型:①number;②string;③boolean;④null;⑤undefined

  对象类型:①object(Function,Array,Date等都是object类型)

 

js的隐式转换

  因为js是弱类型,所以存在大量的隐式转换,其中下面的结果都是true

"1.23" == 1.23 //尝试将字符串转换为数字再比较
0 == false //将boolean值转换为数字再比较,其中false转为0,true转为1,
      //所以1==true返回true,但是2==true返回false
null == undefined new Object() == new Object() [1,2] == [1,2]
//如果是object==string|number会尝试将对象转换为基本类型 比如:new String(‘hi‘) == ‘hi‘ 会
//返回true,其它情况会返回false。

   这样一来就有人会问,那怎么保证 1.23 等于1.23 而不等于 "1.23" 呢?这个就引出了js中的一个新的运算符 === 严格等于运算符,这个运算符会先判断等号两边的类型是否相同,不同就直接返回false。如果类型相同且满足一下原则会返回true:

  ①数值满足值相等

  ②字符串满足长度和字符均相等

  ③null === null

  ④undefined === undefined

  此外还有两个东西NaN和object,其中NaN和任何东西比较都是false,包括它自己,即NaN===NaN也返回false,而object是引用比较,只有是同一个对象才返回true。

 

js包装类型

 技术分享图片

  如上图所示,虽然前面讲过string(不是String)属于基本类型,但是其依然有属性length,这看起来似乎有对象的影子,这其实是js的包装起的作用,每次在使用string、number等类型的变量时,js会自动对这些变量进行包装,创建出一个临时对象出来,图上所示在执行str.length时js偷偷执行new String(str).length了。

 

js类型检测

1、使用typeof检测类型

typeof 100    //返回 "number"
typeof true    //返回 "boolean"
typeof function    //返回 "function"
typeof (undefined)    //返回 "undefined"
typeof new Object()    //返回 "object"
typeof [1,2]    //返回 "object"
typeof NaN    //返回 "number"
typeof null    //返回 "object"

2、使用instanceof判断对象类型(格式:对象 instanceof 函数构造器)

[1,2] instanceof Array //返回true
new Object() instanceof Array //返回false

3、使用Object.prototype.toString

Object.prototype.toString.apply([]);    //返回 "[object Array]"
Object.prototype.toString.apply(function(){});    //返回 "[object Function]"
Object.prototype.toString.apply(null);    //返回 "[object Null]"
Object.prototype.toString.apply(undefined);    //返回 "[object Undefined]"

 

JavaScript基础入门教程(一)

标签:java   影子   语言   define   blog   col   nan   als   数值   

原文地址:https://www.cnblogs.com/flyor/p/8342707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!