原始类型

基本类型:number string boolean null undifined object

object分为  Function Array Date

number string boolean 又有包装类型

new String('string'); 就是包装类型

var str1='string';

var str2=new String('string'); 包装类型

包装类型可以有对应的方法

demo

str2.length //6

str2.a=10;

console.log(str2.a);//10

基本类型也可以这样使用

str1.length//6

str1.a=10;//10

console.log(str1.a);//undifined

原理:

基本类型在调用包装类型的方法时,类型创建基本类型的包装类型,在调用完之后,立即销毁这个临时的包装类型。所以在输出str1.a时结果是undifined

number boolean 同上

var num1=123;

num1.tostring()number转string也是这个原理

类型检测

typeof   运算符

instanceof  运算符

Object.prototype.toString   方法

constructor

duck type

typeof 返回是字符串

适合 function和基本数据类型

typeof 10 number

typeof 'string'    string

type of new Object() object

type of function function

typeof undifined  undifined

typeof [1,2]   object

typeof NaN number

typeof null object

对象类型检测使用

instanceof Object

判断对象是否是数组

左操作数:操作数是是一个对象 否则返回false

右操作数:是一个函数对象或者是函数构造器 typeerror 异常

delete 运算符 删除一个对象的一个属性,也可以设置属性的不能删除

demo:var obj={a:1};alert(obj.a)//1delete obj.a;alert(obj.a)//undefined

demo:

var obj={};Object.defineProperty(obj,'x',{configurable:false,value:1});configurable:true 属性可以删除,为false不可以删除alert(obj.a)//1delete obj.a;//false

alert(obj.a)//1

删除不了原型链中的变量,不能用来删除变量

js没有块级作用域

for(var i=0; i<10; i++){

}

i并不是局部变量,在外部也可以访问i

var a=b=1;

虽然也可以实现a=1; b=1; 但是却是创建了一个全局作用变量b

function aa(){

var a=b=1;

}

console.log(typeof a);//undefined

console.log(typeof b)//number

在js中声明多个变量的方式:

var a=1,b=1;应该用逗号隔开

try

catch

finally

function

function aa(){}函数声明 会被预先处理,函数前置 在方法声明的前面调用方法是可以的 函数表达式不可以

var aa=function(){}函数表达式  函数表达式也可以带函数名,在函数递归调用中很有用

var aa=function cc(){}

for in遍历对象的属性

1 顺序不确定

2 enumberable为false时不会在for in中出现出现

3 for in 对象属性受原型链影响如果原型链中的enumberable为true也会在for in中出现

with 定义局部变量

但是在js中不建议实现

1 让js引擎优化更难

2 可读性差

3 可被变量定义替代

4 严格模式下被禁用

demo:

width(document.forms[0]){

  console.log(name.value);

}

等价于

var form=document.forms[0];

console.log(form.name.value);

进入严格模式

'use strict'

方法内部

function aa(){

'use strict'

}

js文件中

arguments变为参数的静态副本

!function(a){

arguments[0]=100

console.log(a);//100

}(1);

arguments代表所有的形参,可以改变

!function(a){

'use strict'

arguments[0]=100

console.log(a);//1

}(1);

在严格模式下,arguments代表所有的形参,但是不能改变参数的值

定义立即执行函数的方法

!function(a){arguments[0]=100console.log(a);//100

}(1);

(function(a){console.log(a);
})(1);

var aa=(function aa(a){console.log(a);}(10));


转载于:https://www.cnblogs.com/xiaofenguo/p/6772647.html

数据类型 类型检测相关推荐

  1. java 获取js变量类型_JavaScript 的数据类型及其检测

    原标题:JavaScript 的数据类型及其检测 作者:浪里行舟 Java 有几种类型的值? Java 有两种数据类型,分别是基本数据类型和引用数据类型.其中基本数据类型包括 Undefined.Nu ...

  2. JavaScript基本数据类型及类型检测

    数据类型 原始值 Boolean String Number Null Undefined Symbol BigInt 引用数据类型 对象 < Object Function Date RegE ...

  3. JavaScript中类型检测

    文章首发: http://www.cnblogs.com/sprying/p/4349426.html 本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块,这篇文章是我很早之前总结的. 一. ...

  4. ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...

    JS中的数据类型 (一).基本数据类型(值类型) 1.number:数字 -12.12.5.-12.5 0这些数字都是number: js中增加了一个number类型的数据:'NaN' typeof ...

  5. JavaScript学习笔记:类型检测

    JavaScript学习笔记:类型检测 1.利用typeof检测数据类型 注意:type of null,返回的不是"null",而是"object".type ...

  6. JavaScript的数据类型及其检测

    一.JavaScript有几种类型的值? Javascript有两种数据类型,分别是基本数据类型和引用数据类型.其中基本数据类型包括Undefined.Null.Boolean.Number.Stri ...

  7. JavaScript类型检测小结-http://bbs.51js.com/viewthread.php?tid=82661

    老话题了,各种方案和相关讨论都不少,简单总结下: 悠久的typeof JavaScript里只有五种基本数据类型:number, string, boolean, null, undefined. 其 ...

  8. 说说javascript变量类型和变量类型检测

    为什么80%的码农都做不了架构师?>>>    javascript是一种弱类型语言,它的典型例子就是即变量在使用的时候可以给它赋值任何类型.那么先来看下javascript都有那些 ...

  9. 使用=React.PropTypes进行类型检测

    使用PropTypes进行类型检测 随着你的应用的变得越来越大,你可以通过typechecking来找到更多的bug. 对于某些应用,您可以使用JavaScript扩展(如Flow或TypeScrip ...

最新文章

  1. VMware中Ubuntu系统不全屏问题
  2. 为什么大公司还在采用过时的技术?
  3. 超详细解读ORB-SLAM3 单目初始化过程(上篇)
  4. oracle索引大小暴增_oracle 如何预估将要创建的索引的大小
  5. Sms中关于操作系统的部署之上
  6. [转载]eXeScope 6.50本地溢出分析
  7. 谈AK管理之基础篇 - 如何进行访问密钥的全生命周期管理?
  8. 圣诞抽奖 | 2018年的开发者,经历了裁员、加班种种不堪,2019年的你如何获得升职加薪的机会?...
  9. Unity Camera
  10. MYSQL 解压版5.7.12安装和客户端连接。
  11. html元素 按键精灵鼠标移动,按键精灵后台鼠标移动和点击脚本怎么制作。
  12. css鼠标移入变小手
  13. Google Play 开发者账号注册 上架应用
  14. uwp浏览器java源码_在UWP应用程序中打开UWP
  15. c语言求闰年while,基础练习 闰年判断 c语言
  16. 小牛的net程序开发之路
  17. 一文读懂 DNS 解析的工作机制和优化挑战
  18. linux raid5 性能,RAID级别及各个级别特性
  19. 最成熟的网格化系统及支撑平台
  20. 深度:一文看懂Linux内核,Linux内核架构和工作原理详解

热门文章

  1. 关于NLPIR应用在KETTLE中的探索
  2. UISegmentedControl (待续)
  3. 【前端】2015阿里前端实习生在线笔试题
  4. RepositoryBase文件解析
  5. hdu 4190(二分)
  6. GitHub使用指南!(ubuntu)
  7. python—OpenCV2中 cv2.VideoCapture(),read(),waitKey()的使用
  8. 常用数学符号读法大全
  9. 什么是dBi、dBd、dB、dBm、dBc ?
  10. ADS与RealView MDK