【总结】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数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...
随机推荐
- [deviceone开发]-openPage的动画效果示例
一.简介do_App的openPage支持16种过场动画,这个示例直观的展示16种动画的效果.适合初学者.二.效果图三.相关下载https://github.com/do-project/code4d ...
- SAP CRM 使用Javascript触发SAP Server Event
原文地址:How To Trigger SAP Server Event With Javascript 本文地址:http://www.cnblogs.com/hhelibeb/p/5977921. ...
- Atittit.研发公司的组织架构与部门架构总结
Atittit.研发公司的组织架构与部门架构总结 1. archi组织架构与 部门规划2 1.1. 最高五大组织机构2 1.2. 宗教事务部2 1.3. 制度与重大会议委员会2 1.4. 纠纷处理部: ...
- React Native之 ScrollView介绍和使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- iOS 性能调试
性能调优的方式: 1.通过专门的性能调优工具 2.通过代码优化 1. 性能调优工具: 下面针对iOS的性能调优工具进行一个介绍: 1.1 静态分析工具–Analyze 相信iOS开发者在App进行Bu ...
- IOS 网络浅析-(十二 UIWebView简介)
在这篇随笔里,我们只要知道UIWebView是什么就可以了. UIWebView 是苹果提供的用来展示网页的UI控件,它也是最占内存的控件. iOS8.0之后出现了webkit框架,WKWebView ...
- 关于bundle install 的一点补充
在第一次运行bundle install之后,生成了Gemfile.lock文件,里面记录gem的具体版本号,按照官方文档说明,以后运行bundle install就不会再依据Gemfile,而是根据 ...
- 拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc
不久前发布了一篇博文".NET轻量级RPC框架:Rabbit.Rpc",当初只实现了非常简单的功能,也罗列了之后的计划,经过几天的不断努力又为Rabbit.Rpc增加了一大波新特性 ...
- Spring, MyBatis 多数据源的配置和管理
同一个项目有时会涉及到多个数据库,也就是多数据源.多数据源又可以分为两种情况: 1)两个或多个数据库没有相关性,各自独立,其实这种可以作为两个项目来开发.比如在游戏开发中一个数据库是平台数据库,其它还 ...
- chrome中不可见字符引发的float问题
起因是刷知乎时碰到这么个问题:https://www.zhihu.com/question/41400503 问题代码如下: <!DOCTYPE html> <html lang=& ...