【总结】Javascript基础
Javascript的数据类型
- Number
- String
- Boolean
- Undefined
- Null
- Object
如下图,其中Number、String、Boolean、Undefined、Null是原始类型,Object是对象类型,Object中可以包含Array、Function等类型。

常规运算符
下面来看几行代码
var num=32
var str=”32”
num+str=”3232” //利用这一点可以把数字转换为字符串
var num=123
num=num+””//”32”
num=”12”
num=num-0//转换成数字 12
当常规运算符左右两侧是Number和String的时候,如果是加号,会把Number转成String处理,如果是减号,则String会被转成Number处理,乘法和除法类似于减法。
等于和严格等于
var c=(0==false) /true
var c=(0===false)// false 严格等于 除了类型相等,值也要相等
(null==undefined)//true
(null===undefined)//false new Object() == new Object()// false Object是引用类型
[1,2]==[1,2] //false 因为[1,2] 是Array 属于Object 所以是False null==null //true
null===null //true undefined==undefined//true
undefined===undefined//true NaN==NaN //false
NaN===NaN //false NaN和谁都不想等,即使是自己 12=="12"//true 等号两边一个是数字一个是字符串,编译器会尝试把字符串转成数字 true==1//true 等号两边一个是布尔值一个是其他类型,编译器会尝试把布尔转成数字再比较
true=="1" //true
var a=new Object("123")
a==123 //true
a=”123”//true
如果等号两边一边是Object另一边是Number或者String,Object会转换成基本类型再比较
类型包装
原始类型中,String、Number、Boolean都有包装类型
var str="string"
var s=new String("string") //String的包装类,包含了许多的方法和属性
str.t=10//str是基本类型,但是当我们把str附加一个属性并赋值的时候,Javascript会智能地把str转换为对应的临时的包装类型,当再次访问str的t属性的时候,发现值是undefined,因为生成的临时包装对象被销毁了,所以t的值变成了undefined。
类型检测
主要有5种类型检测方式
- Typeof
- instanceof
- Object.prototye.toString
- Constructor
- duck type
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"?本来是规定返回“null” 但是这导致了大量的网站瘫痪,所以规定返回“Object”
typeof Null//"undefined"
null大小写不一致时返回的类型也不一样
typeof适用于原始类型以及function的检测,遇到null失效
instanceof 是基于原型链的,适用于Object自定义对象,也可以用来检测原生对象,在不同的iframe和window间检测时失效,右侧对象必须是函数对象或函数构造器,否则就会抛出异常
Object.Prototype.toString.appy([])通过{}.toString拿到,适合内置对象和原生类型,遇到null和undefined失效
instanceof 123 //会抛出如下异常
Uncaught SyntaxError: Unexpected token instanceof
[1,2] instanceof Array //true !!!原理是判断左侧对象的原型链上是否有右侧构造函数的prototype属性。
ject.Prototype.toString.appy([]);===”[object Array]”
Object.Prototype.toString.appy(function(){});===”[object Function]”
Object.Prototype.toString.appy(nll);=== ”[object Null]” //IE 678 返回的是[objet object]兼容性问题
Object.Prototype.toString.appy(undefined);=== ”[object Undefined]”
作者:悠扬的牧笛
博客地址:http://www.cnblogs.com/xhb-bky-blog/p/5854646.html
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
【总结】Javascript基础的更多相关文章
- JavaScript基础
JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- Javascript基础回顾 之(三) 面向对象
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- Javascript基础回顾 之(二) 作用域
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- Javascript基础回顾 之(一) 类型
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- JavaScript 基础回顾——对象
JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...
- javascript基础01
javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...
- javascript基础02
javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...
随机推荐
- 提示用户升级浏览器代码 低于ie9的浏览器提示
一般想做一些酷炫的网站都有个烦恼,那就是兼容ie浏览器,好在现在使用ie的也越来越少,微软也转战edge浏览器. 使用 Bootstrap经常用js插件可以模拟兼容旧版本的浏览器(bsie 鄙视IE) ...
- asp.net将图片转成二进制存入数据库
一.代码如下 int code = int.Parse(this.TextBox1.Text);//图片编码 string value = this.FileUpload1.PostedFile.Fi ...
- VS2012 Unit Test——Microsoft Fakes入门
如题,本文主要作为在VS2012使用Fakes的入门示例,开发工具必须是VS2012或更高版本. 关于Fakes的MSDN地址:http://msdn.microsoft.com/en-us/libr ...
- [Erlang 0129] Erlang 杂记 VI
把之前阅读资料的时候记下的东西,整理了一下. Adding special-purpose processor support to the Erlang VM P23 简单介绍了Erlang C ...
- 鸟哥私房菜学习(一)——Linux背景了解
1.Linux,继承鱼Unix 2.Unix档案系统的两个重要概念 3.几个主要的 Linux distributions 发行者网址: • Red Hat: http://www.redhat.co ...
- 【FLUENT案例】04:利用DDPM+DEM模拟鼓泡流化床
1 引言2 问题描述3 准备4 FLUENT前处理 1 引言 DEM碰撞模型扩展了DPM模型的功能,能够用于稠密颗粒流动的模拟.该模型可以与DDPM(Dense DPM)模型何用以模拟颗粒对主相的阻碍 ...
- Warm myself by my hand
周末的尾巴了. 前几天白日里的气温降到10摄氏度以下,穿上了秋裤.隔天跑一次步,晚上九点多,5公里,25分钟左右.换上薄薄的运动裤,两件运动衣.一出宿舍门就没觉得冷,跑着跑着就愈加热了起来.遇到的问题 ...
- 用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题
Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使 ...
- Hash 函数及其重要性
不时会爆出网站的服务器和数据库被盗取,考虑到这点,就要确保用户一些敏感数据(例如密码)的安全性.今天,我们要学的是 hash 背后的基础知识,以及如何用它来保护你的 web 应用的密码. 申明 密码学 ...
- Spring 设值注入 构造注入 p命名空间注入
注入Bean属性---构造注入配置方案 在Spring配置文件中通过<constructor-arg>元素为构造方法传参 注意: 1.一个<constructor-arg>元素 ...