JavaScript学习笔记(五)——类型、转换、相等、字符串
第六章 类型 相等 转换等
一、类型
1 typeof();
typeof是一个内置的JavaScript运算符,可用于探测其操作数的类型。
例:
<script language="JavaScript" type="text/JavaScript">
var test1="abcdef"; //string
var test2=123; //number
var test3=true; //boolean
var test4={}; //object
var test5=[]; //object
var test6; //undefined
var test7={"asdf":123}; //object
var test8=["asdf",123]; //object
function test9(){return "asdfg"}; //function
console.log(typeof test1);//string
console.log(typeof test2);//number
console.log(typeof test3);//boolean
console.log(typeof test4);//object
console.log(typeof test5);//object
console.log(typeof test6);//undefined
console.log(typeof test7);//object
console.log(typeof test8);//object
console.log(typeof test9);//function
</script>
2 undefined
说明:对于任何还没有值(即未初始化)的东西,都会将undefined赋给它;undefined的类型是undefined
【未初始化的变量、访问不存在或已删除的属性、使用不存在的数组元素】
优点:undefined让你能够判断是否给变量(属性、数组元素)赋值了
应用:
//变量
var x;
if(x==undefined)
{
处理程序;
}
//对象的属性
var customer={
name:"Jenny"
};
if(customer.phonenumber==nudefined)
{
处理程序
}
3 null
说明:表示没有对象可以赋给变量;
与undefined对比:undefined:在变量未初始化、对象没有指定属性、数组没有指定元素;
null:在应该提供一个对象,但无法创建或找到时;
再次说明:返回null未必意味着出现了问题,这可能只是意味着有什么东西不存在,需要创建它或可以忽略它。
例:
var weather=document.getElementById("weatherDiv");
if(weather!=null)
{
//为div元素weather创建内容
}
4 NaN
说明:不是数字的数字【它的类型为number】,表示
0/0 等不可以被表示的数字,
*是一个数字,只是无法表示;
*NaN!=NaN 【sqrt(-1)与sqrt(-2)】;
*判断函数是isNaN();返回值为布尔类型;
*向isNaN()传递一个不能转换为数字的字符串时返回true;
*typeof null返回值为object【与说明相对应】
*NaN与Infinity区别:Infinity是指任何超过浮点数上限1.7976931348623157E+1.038的值,
(-Infinity是小-1.7976931348623157E+1.038)
二、 相等
1 理解相等
如果两个值类型相同,就直接进行比较;
如果两个值类型不同,就尝试将他们转换为相同的类型再进行比较;
返回值:相等true不等false
2 相等运算符转换操作数:
*比较数字和字符串,将字符串转换为数字,(如将“99”转换为 99 );如果不能转换为数字则转换为NaN
*比较布尔类型和其他类型,将布尔中true=1,false=0;
*undefined==null;
*""空字符串转换为数字0;
拓:严格相等:===【类型和值都相等】
没有<==和>==但是有!===
应用:"true"==true;//返回false因为签前面为字符串后边布尔转换为数字
"banana"<"melon";//返回true,因为按照字母排列顺序Unicode排序,开头b<m,拓M<m
三、类型转换
1 涉及转换的运算符
·
+ 数字遇到字符串,将数字转换为字符串;如1+2+"pizzas"="3
pizzas";1+(2+"pizzas")="12 pizzas";true转换为字符串
·
*数字遇到字符串,将字符串转换为数字
·
/数字遇到字符串,将字符串转换为数字
·
- 数字遇到字符串,将字符串转换为数字
四、 判断两个对象是否相等
·
运算符:==和===等价
·
意义:检查两个对象变量是否相等时,比较的是指向对象的引用,仅当两个引用指向的是同一个对象时,他们才相等;
·
例:
<!doctype html>
<html lang="en">
<head>
<title>look for car</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script language="JavaScript" type="text/JavaScript">
function findCarInLot(car)
{
for(var i=0;i<lot.length;i++)
{
if(car===lot[i])//== 一样
return i+1;
}
return -1;
}
var chevy={
make:"Chevy",
model:"Bel Air"
};
var taxi={
make:"Webville Motors",
model:"Taxi"
};
var fiat1={
make:"Fiat",
model:"500"
};
var fiat2={
make:"Fiat",
model:"500"
};
var lot=[chevy,taxi,fiat1,fiat2];
var loc1=findCarInLot(taxi); //
var loc2=findCarInLot(fiat1);//
var loc3=findCarInLot(chevy);//
var loc4=findCarInLot(fiat2);//
console.log(loc1);//
console.log(loc2);//
console.log(loc3);//
console.log(loc4);//
</script>
</head>
<body>
<h1>Look for cars in the parking lot</h1>
</body>
</html>
五 、真值和假值
·
说明:在JavaScript中有些值并非true和false但是用于条件表达式中时被视为true和false。
·
记住五个假值,其余就是真值:undefined null 0 空字符串 NaN
例如:if([]){//代码;}中[] 表示数组为真值
六 、字符串
·
前奏:每种类型都归属两个阵营之一,基本类型和对象;
·
字符串/数字/布尔也可以是既有基本类型又是对象,但是后两者的属性和方法较前一者少很多;
·
string属性和方法介绍:
·
属性str.length:返回字符串的长度即字符个数;
·
方法str.charAt():参数范围是0-长度-1 的整数,返回为该索引的字符;
·
方法str.indexOf("cat");返回第一个cat中c的索引;
str.indexOf("the",5);从索引为5开始搜索,返回the中t的索引;
如果没有找到返回-1;
·
方法str.substring(5,10);返回索引5(包括)到10(不包括)之间的字符串;
substring(5);返回从索引5到字符串结尾的字符串;
·
方法str.slice(5,7);删除字符串的一部分并返回结果;和substring返回结果相同
·
方法str.split("|");返回以|为界分隔的字符串数组;
·
方法str.toLowerCase();返回将字符串的所有大写转换成小写;
·
方法str.toUpperCase();返回将字符串中的所有小写转换成大写;
·
方法str.concat(str2);返回将str2拼接在str后的字符串;参数可以是多个即继续向后拼接;
·
方法str.replace("fgh","12");查找子串fgh并替换成另外一个字符串12;
·
方法str.lastIndexOf();与indexOf类似但是查找最后一个子串;
str="asd,fgh,jkfg
";str3=str.lastIndexOf("fg",4);//返回4
str="asd,fgh,jkfg
";str3=str.lastIndexOf("fg");//返回10
·
方法match:在字符串中查找与正则表达式匹配的子串
<script type="text/javascript"> var str="Hello world!"
document.write(str.match("world") + "<br />")
document.write(str.match("World") + "<br />")
document.write(str.match("worlld") + "<br />")
document.write(str.match("world!")) </script>
输出:
world
null
null
world!
·
方法str.trim():删除字符串开头和末尾的空白字符;
七、举个栗子:
<!doctype html>
<html lang="en">
<head>
<title>Check phone number</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script language="JavaScript" type="text/JavaScript">
//要求检验7位数字的电话号,中间第四位-可有可无
//方法一:
function validate1(phonenumber)
{
if(phonenumber.length>8||phonenumber.length<7)
return false;
for(var i=0;i<phonenumber.length;i++)
{
if(i==3)
{
if(phonenumber.length===8&&phonenumber.charAt(i)!=='-')
return false;
else if(phonenumber.length==7&&isNaN(phonenumber.charAt(i)))
return false;
}
else if(isNaN(phonenumber.charAt(i)))
return false;
}
return true;
}
//方法二:还有bug吗?
function validate2(phonenumber)
{
if(phonenumber.length>8||phonenumber.length<7)
return false;
var first=phonenumber.substring(0,3);
var second=phonenumber.substring(phonenumber.length-4);
if(isNaN(first)||isNaN(second))
return false;
if(phonenumber.length===8)
return (phonenumber.charAt(3)=='-');
return true;
}
//方法三:正则表达式
function validate3(phonenumber)
{
return phonenumber.match(/^\d{3}-?\d{4}$/);
}
var str1="6724025";
var str2="672-4254";
var str3="72554896"
console.log(validate1(str1));
console.log(validate2(str2));
console.log(validate3(str3));
</script>
</head>
<body>
<h1>Verify that the phone number is correct</h1>
</body>
</html>

JavaScript学习笔记(五)——类型、转换、相等、字符串的更多相关文章
- JavaScript学习笔记——数据类型强制转换和隐式转换
javascript数据类型强制转换 一.转换为数值类型 Number(参数) 把任何的类型转换为数值类型 A.如果是布尔值,false为0,true为1 B.如果是数字,转换成为本身.将无意义的后导 ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
- JavaScript:学习笔记(2)——基本概念与数据类型
JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...
- JavaScript学习笔记[0]
JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...
- Javascript学习笔记——操作浏览器对象
Javascript学习笔记 目前尝试利用javascript去对于一个浏览器对象完成一系列的访问及修改, 浏览器是网页显示.运行的平台,常用的浏览器有IE.火狐(Firefox).谷歌(Chrome ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(2——复制和继承财产)
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
- JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...
- Javascript学习笔记-一些关键点
Javascript学习笔记-一些关键点 Table of Contents 1. 调试 2. == vs === 3. 两种函数声明 4. 技术感悟 1 调试 现在的主流浏览器都提供了开发者模式,可 ...
- C++基础 学习笔记五:重载之运算符重载
C++基础 学习笔记五:重载之运算符重载 什么是运算符重载 用同一个运算符完成不同的功能即同一个运算符可以有不同的功能的方法叫做运算符重载.运算符重载是静态多态性的体现. 运算符重载的规则 重载公式 ...
随机推荐
- 404 Note Found 队 Alpha 6
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- cocos2d-x 音效中断问题
做跑酷重吃金币播音效时,播放其它音效会使得音效所有中断,最后发现时音效上限的问题,2.2.3默认的似乎是5个音效,改动成50后问题解决. 在java中的org.cocos2dx.lib包下有一个Coc ...
- 使用java代码将时间戳和时间互相转换
时间戳转时间: SimpleDateFormat simpleDateFormat = null; simpleDateFormat = new SimpleDateFormat("yyyy ...
- Linux环境下部署SpringBoot项目
1.在pom文件中添加maven插件 <build> <plugins> <plugin> <groupid>org.springframework.b ...
- 【原创】修改Sqoop1.4.6源码实现--fields-terminated-by选项支持多字节分隔符
修改Sqoop1.4.6源码实现--fields-terminated-by选项支持多字节分隔符 最近项目中需要使用sqoop实现oracle与hdfs的数据交换,从oracle数据表导入到hdfs集 ...
- Java中的冒泡排序
Java中的冒泡排序排序的第一种思想:将第一个值与后面的值相比较,如果第一个值比其他值小,那么将较大的值与第一个换位置,然后继续比较直至所有的数比较完成.这样就可以保证第一个数是最大数.然后将第二个数 ...
- JAVA项目服务器部署
1.下载 Java JDK 搜索jdk下载,然后进入JAVA官方网站jdk下载页,选择自己的对应的操作系统,点击下载 https://www.oracle.com/technetwork/java/j ...
- #leetcode刷题之路19-删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点.示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1-& ...
- 【学时总结】 ◆学时·III◆ 二分图
[学时·III] 二分图 ■基本策略■ 其实本质是图论中的网络流 二分图是两个由多个点组成的集合(上部和下部,且没有重叠),两个集合中的点不与该集合内其他的点连通,但和另一个集合内的点连通.我们称这两 ...
- mysql的索引和执行计划
一.mysql的索引 索引是帮助mysql高效获取数据的数据结构.本质:索引是数据结构 1:索引分类 普通索引:一个索引只包含单个列,一个表可以有多个单列索引. 唯一索引:索引列的值必须唯一 ,但允许 ...