Js中的类型只有6种,其中基本数据类型有5种分别为string,number,boolen,null,undefined,引用类型有一种,就是object,object是一个大的综合体,在JS中除了那5个基本数据类型以外,其他的一切皆对象。以下是最近自学js整理的一些笔记,希望能让更多初学者了解到数据类型的基本概念。
1.获取变量类型
typeof
var age = 18;
console.log(typeof age); // 'number'
2.基本数据类型
字符串(String),数值型(number),布尔型(boolean)
<script>
//a.字符串
var a = "laowangba";
//document.write(typeof(a));
//数值
var b = 123;
var b1 = 123.1;---> 同样是number类型,不要判断两个浮点数是否相等.
//布尔型
var c = ture;
var d = false;
</script>
3.复合数据类型
对象(object),数组(array object)
<script>
//对象
var e = {'name':'niu','age':18}; ---> 等价于php中class a()
</script>
4.其他数据类型
函数,null,undefined
<script>
//函数类型
var j = function(){};
//document.write(j); ---> 这里可能会有争议,但typeof打印出来的确就有funcion类型
//null类型
var h = null;
//document.write(h); ---> 空对象,对象类型中的一个分支,没有此对象的时候会显示null.
//alert(document.getElementById('notExistElement')); --->显示为null,找不到此对象
//undefined类型
var g;
//document.write(i); ---> 打印一个不存在的变量,定义为undefined,未定义或者定义了,但未初始化
//alert(null == undefined);---> 显示结果是true
//alert(null === undefined);---> 显示结果是false
</script>
2.1 隐式转换
隐式转换常用于if判断等需要直接结果的地方.
<script>
undefined == null; // true
1 == true; // true
2 == true; // false
0 == false; // true
0 == ''; // true
NaN == NaN; // false ---> NaN 注意:这是JS中一个特殊的表示,NaN表示不等于任何值.这个数值表示本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。任何数值除以0都会导致错误而终止程序执行。一般使用isNaN()来判断是否为NaN类型.
[] == false; // true
[] == ![]; // true
'6' - '3' // 3
1234 + 'abcd' // "1234abcd"
</script>
undefined与null相等,但不恒等(===)
一个是number一个是string时,会尝试将string转换为number
隐式转换将boolean转换为number,0或1
隐式转换将Object转换成number或string,取决于另外一个对比量的类型
对于0、空字符串的判断,建议使用 “===”
“==”会对不同类型值进行类型转换再判断,“===”则不会.它会先判断两边的值类型,类型不匹配时直接为false
2.2显示转换
Number:
var a = Number('1');
var b = Number(1);
var c = Number('c');
var d = Number(null);
var e = Number(undefined);
console.log(a,b,c,d,e); // 1 1 NaN 0 NaN
// Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN
String:
String(1234); // "1234"
String('abcd'); // "abcd"
String(true); // "true"
String(undefined); // "undefined"
String(null); // "null"
Boolean:
var a = Boolean('0');
var b = Boolean(0);
var c = Boolean('1');
var d = Boolean(null);
var e = Boolean(undefined);
var f = Boolean(NaN);
console.log(a,b,c,d,e,f); //true false true false false false
// 0、''(空字符串) 、null、 undefined 、NaN 会转换成false 其它都会转换成true
parseFloat:
var a = parseFloat('1.2df'); //1.2
var b = parseFloat('1.3.4'); //1.3
var c = parseFloat('c12'); //NaN
var d = parseFloat(null); //NaN
var e = parseFloat(undefined); //NaN
console.log(a,b,c,d,e);
// parseFloat() 把字符串转换成浮点数
// parseFloat()和parseInt非常相似,
// 不同之处在与parseFloat会解析第一个 . 遇到第二个.或者非数字结束
// 如果解析的内容里只有整数,解析成整数
parseInt()
var a = parseInt('1.2df'); //
var b = parseInt(1);
var c = parseInt('c12');
var d = parseInt(null);
var e = parseInt(undefined);
console.log(a,b,c,d,e); //1 1 NaN NaN NaN
// 如果第一个字符是数字会解析,直到遇到非数字结束
// 如果第一个字符不是数字或者符号就返回NaN
1. 单引号和双引号均可解析转义字符
2. 单引号和双引号均不能解析变量
3. 变量与字符串,变量与变量要使用+来拼接,区分开PHP
4. 单引号和双引号可以互相嵌套,如果单引号中药嵌套单引号,需要将单引号转义,同理,双引号相同
<script>
//单引号和双引号为啥不能解析说明
var a = 10;
alert('a'); ---> 此处懵逼,到底是要输出变量还是字符串?它不像PHP,有个$直接可以区分开变量和字符串
alert('a'+ a);
//+连接说明
alert('hello' + 3 + 'world'); //hello3world
alert(3 + 2 + 'hello' + 5 + 'world'); //5hello5world
alert(4 + 4 + 'hello' + 4 + 5 + 'world'); //8hello45world ---> 左往右连接,两个数字会理解为加号,直到碰见不为数值则理解为拼接.
</script>
如何打印一下字符串:
var s = '我很喜欢 \"雷锋 \'的精神\' \"';
console.log(s);
字符串长度
length属性用来获取字符串的长度
var str = 'Hello World';
console.log(str.length);
在JavaScript中存在这样两种原始类型:Null与Undefined。这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined?Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
主要介绍了JS中检测数据类型的几种方式,typeof运算符用于判断对象的类型,但是对于一些创建的对象,它们都会返回\'object\',有时我们需要判断该实例是否为某个对象的实例,那么这个时候需要用到instanceof运算符
对于object和number、string、boolean之间的转换关系,ToPrimitive是指转换为js内部的原始值,如果是非原始值则转为原始值,调用valueOf()和toString()来实现。
Undefined类型表示未定义,它的类型只有一个值为undefined。undefined和null有一定的表意差别。非整数的Number类型无法使用 == 或 === 来比较,因为 JS 是弱类型语言,所以类型转换发生非常频繁
近在做项目代码重构,其中有一个要求是为代码添加智能提示和类型检查。智能提示,英文为 IntelliSense,能为开发者提供代码智能补全、悬浮提示、跳转定义等功能,帮助其正确并且快速完成编码。
基本类型:按值访问,可以操作保存在变量中实际的值;引用类型数据存在堆内存,而引用存在栈区,也就是说引用类型同时保存在栈区和堆区,关于==的执行机制,ECMASript有规范,因为==前后的值交换顺序,返回的值也是一样的,所以在此对规范做出如下总结
JavaScript 是一种弱类型或者说动态类型语言。所以你不用提前声明变量的类型,在程序运行时,类型会被自动确定,你也可以使用同一个变量保存不同类型的数据。
js的值传递和引用(地址)传递:js的5种基本数据类型 number,string,null,undefined,boolean 在赋值传递时是值传递,js的引用数据类型(object,array,function)进行引用传递,其实底层都是对象。
JS中所有的值都可以转换成布尔类型 使用Boolean()或者 !!(两个感叹号),JS中所有的值都可以转换成数字类型,使用Number()或+。数字类型转换场景目的只有一个,用于计算,将后台传递的数据,从字符串转换为数字并参与计算
众所周知,JS在很多情况下会进行强制类型转换,其中,最常见两种是:1.使用非严格相等进行比较,对==左边的值进行类型转换2.在if判断时,括号内的值进行类型转换,转化为布尔值
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!