JavaScript基础入门教程(一)

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]"

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

时间: 2024-10-08 13:50:11

JavaScript基础入门教程(一)的相关文章

JavaScript基础入门教程(四)

说明 前面三篇博客介绍了js中基本的知识点,包括变量类型及其转换.表达式.运算符等小知识点,这篇博客主要讲的是对象.如果你学过java等语言,你也许在下文的阅读中发现在js中的对象与java中的对象存在一定的区别. 相关术语说明 一.对象中成员变量的"属性特性" ①可写:表明该属性可以设置其值. ②可枚举:表明是否可以通过for/in循环返回该属性. ③可配置:表明是否可以删除或者修改该属性. 注:关于for/in等语句的说明,第一篇博文就说过,本系列教程是建立在读者对基本的编程有一定

JavaScript基础入门教程(二)

说明 前一篇博客介绍了js以及一些关于js基本类型的简单知识,本篇博客将详细介绍js的基础类型,捎带介绍对象类型,更详细的对象类型的说明将后续再讲. js中类型的说明 js中的类型分为基本类型和对象类型,其中基本类型包括:①数字.②字符串.③布尔值.此外还有两个原始值null和undefined.其中对象包括数组对象.函数对象和普通对象,普通对象是"命名值"的无序集合,而数组对象是带编号的值的有序集合.JavaScript核心还定义了三种有用的类:日期(Data)类.正则(RegExp

JavaScript基础入门教程(三)

说明 前面的两篇博客介绍了js中的基本知识中的变量类型.标识符等.这篇博客主要谈表达式以及运算符. 原始表达式 原始表达式就是表达式中最小的,不能在分割的表达式,一般指变量.常数直接量.关键字(true.false.null.this),这里需要注意的是undefined是一个全局变量,而不是关键字. 对象和数组的初始化表达式 数组初始化表达式是一个方括号,中间放置数组中的元素,元素间用逗号分割.元素可以是表达式.数组.空. 1 [] //一个空数组,数组里面没有元素 2 [1+2,3+4] /

Android基础入门教程——7.5.2 WebView和JavaScrip交互基础

Android基础入门教程--7.5.2 WebView和JavaScrip交互基础 标签(空格分隔): Android基础入门教程 本节引言: 在上一节中我们对Android的WebView(网页视图)进行了学习,相信已经了解了WebView的基本用法: 而本节我们要学习的就是通过:HTML -> JS ->Java来完成HTML5端与Android手机间的 互访!好的,话不多说,有吗有真相,让我们通过编写代码来体验这种微妙的联系吧~ PS:为了方便,本节用到的HTML都是以文件的形式放到a

Android基础入门教程——7.5.3 Android 4.4后WebView的一些注意事项

Android基础入门教程--7.5.3 Android 4.4后WebView的一些注意事项 标签(空格分隔): Android基础入门教程 本节引言: 本节参考原文:Android 4.4 中 WebView 使用注意事项.md 从Android 4.4开始,Android中的WebView不再是基于WebKit的,而是开始基于Chromium,这个改变 使得WebView的性能大幅提升,并且对HTML5,CSS,JavaScript有了更好的支持! 虽然chromium完全取代了以前的We

Android基础入门教程——7.5.5 WebView缓存问题

Android基础入门教程--7.5.5 WebView缓存问题 标签(空格分隔): Android基础入门教程 本节引言: 现在很多门户类信息网站,比如虎嗅,ifanr,钛媒体等等的APP,简单点说是信息阅读类的APP,很多 都是直接嵌套一个WebView用来显示相关资讯的,这可能就涉及到了WebView的缓存了!所谓的页面缓存 就是指:保存加载一个网页时所需的HTML,JS,CSS等页面相关的数据以及其他资源,当没网的时候或者 网络状态较差的时候,加载本地保存好的相关数据!而实现这个缓存的方

Android基础入门教程——7.5.1 WebView(网页视图)基本用法

Android基础入门教程--7.5.1 WebView(网页视图)基本用法 标签(空格分隔): Android基础入门教程 本节引言 本节给大家带来的是Android中的一个用于显示网页的控件:WebView(网页视图),现在Android应用 层开发的方向有两种:客户端开发和HTML5移动端开发!所谓的HTML5端就是:HTML5 + CSS + JS来构建 一个网页版的应用,而这中间的媒介就是这个WebView,而Web和网页端可以通过JS来进行交互,比如, 网页读取手机联系人,调用手机相

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来