摘要:布尔类型的数据类型转换在中,可以将所有的数据类型的值转换为布尔类型的值。
语法 区分大小写
`JavaScript`中的变量、函数名都是区分大小写的,`name`,`Name`,`NAME`,不是同一个变量标识符
标识符就是变量、函数、属性的名字或者函数的参数注释
注释就是不被计作程序语句,专门用来给程序员自己看的内容 //单行注释 /* * 多行注释 * */变量
变量就是一个用来存储数据的,声明变量用`var`
//声明一个变量,名字叫name var name;
如果要定义多个变量,有两种方式可以定义:
//方式一:分开定义 var name; var age; var sex; //方式二:统一定义 var name,age,sex;给变量赋值
//变量可以在声明的时候赋值 var name = "John"; //也可以声明以后再赋值 var name; name = "John"; //这里的变量值也可以是"John",单引号和双引号都表示字符串 //赋值以后可以修改变量的值 // 方法一 var name = "John"; name = "Tome"; console.log(name);//Tome //方法二 var name; name = "John"; name = "Tome"; console.log(name)//Tome变量的作用域
function demo(){ var name = "John"; } demo();//调用函数--在函数名后面加括号`()`表示执行该函数 console.log(name);//错误
在上面这段代码中,在函数内部定义了一个局部变量,局部变量在函数运行结束以后就会被销毁,此时在函数外面调用name变量的时候,name这个变量并不存在
function demo(){ name = "John";//全局变量 } demo(); console.log(name); //John
上面这段代码中在函数内声明了一个变量,但是并没有用var声明,此时当函数运行过后,name就是一个全局变量,那么函数运行结束以后,这个变量并没有被销毁,所以在函数体外部依然可以找到name这个变量
前文中提到的全局变量、局部变量、函数体等知识点虽然没有学过,但是可以提前理解一下,后面会做详细介绍数据类型
另外,虽然省略var操作符可以定义全局变量,但是不推荐这样做,因为在局部中定义全局变量难以维护
在javaScript中有5种数据类型(基本数据类型):Undefined,Null,Boolean,Number,String。
Object也是一种数据类型,但是是复杂数据类型,Object本质上是由一对健值对组成。
typeof用来检测数据类型,返回的结果有:
"undefined"---未定义
"boolean"---布尔类型
"string"---字符串
"number"---数字类型
"object"---对象或者是null
function`---函数类型的数据
typeof null会返回object,这是因为特殊值null被认为是一个空对象
// undefined var name; console.log(typeof name); //var定义,结果是string,let定义是undefined // let,ECMAScript6中定义数据的关键字 // boolean var flag = true; console.log(typeof flag); //boolean // string var name = "Json"; console.log(typeof name); //string // object var obj = { "name": "Json", "age": 20 }; console.log(typeof obj); //object // function function add(a,b) { return a + b; } console.log(typeof add);//functionUndefined类型
Undefined只有一个值,即undefined。对于声明了但是没有初始化的变量,其值就是一个undefined。
var name; console.log(name == undefined);// true // 这个例子类似于 var name = undefined; console(name == undefined);// trueNull类型
Null类型是一个只有一个值的数据类型,这个值是null。
var person = null; console.log(typeof person);// object
这里给person赋值为null,表示person是一个空指针的变量,将来指向一个对象。
所以如果要定义一个变量,将来用于保存对象,那么赋初始值的时候要赋值为null。比如下面这个例子:
var person = null; if(person == null){ person = { "name":"Jerry", "age":20 } }Boolean类型
Boolean有两个字面值:true和false。
var flag = true; var isSuccess = false;
布尔类型的数据类型转换
在JavaScript中,可以将所有的数据类型的值转换为布尔类型的值。转换方法如下:
var name = "Json"; var nameBoolean = Boolean(name); console.log(nameBoolean);//true
转换规则:
String类型,非空为true,空为false
Number类型,非0为true,0和NaN为false
Object类型,任何对象为true,null为false
比如我们可以用字符串的非空作为判断的条件:
var message = "Please send me latter"; if(message){ send(message); } function send(mes){ console.log("发送消息---消息内容为"+mes); }Number类型
关于Number类型的数据,我们不去研究八进制、十六进制,这些类型的数据会给我们的学习带来不小的负担,另外数值的范围我们也不去研究。
数值转换关于数值转换,需要学习三个函数:Number(),parseInt(),parseFloat()。
Number():用于将任何数据类型转换为数值类型的数据;
parseInt():将字符串类型的数字转换为int类型的数据;
parseFloat:将字符串类型的数据转换为float类型的数据。
Number():
如果是Boolean类型的数据,true被转换为1,false被转换为0;
如果是数字,只是简单的传入和返回;
如果是null,返回0;
如果是undefined返回的是NaN
如果是字符串
如果是"123",返回123,如果是"0123"返回的是123;
如果是十六进制的数据,则会返回对应的十进制的值;
如果是空字符串,则返回0
var number1 = Number("John");//NaN var number2 = Number("");//0 var number3 = Number("090");//90 var number4 = Number(true);//1 var number5 = Number(false);//0 var number8 = 12+"number";//NaN
parseInt():
var number = parseInt("070");//56
前面的Number()则是将"070"转换成了70,而parseInt()则是将070转换成了56,这是因为parseInt()函数将"070"当作是八进制的一个数值进行转换
为了消除这种困惑,在parseInt()函数中还有另一个参数作为补充,第二个参数可以指定被转换值按照什么类型的值去转换:
var num1 = parseInt("10", 2);//2 (按二进制解析) var num2 = parseInt("10", 8);//8 (按八进制解析) var num3 = parseInt("10", 10);//10(按十进制解析) var num4 = parseInt("10", 16);//16(按十六进制解析)
parseFloat()与parseInt()类似,是从第一个字符开始解析,解析到字符串末尾或者遇到第二个小数点为止,比如’12.34.32’解析的结果就是12.34。
下面的例子中,标记有(了解)的可以不做重点关注:
var num1 = parseFloat("1234blue");//1234 (整数) var num2 = parseFloat("0xA"); //0 (了解) var num3 = parseFloat("22.5");//22.5 var num4 = parseFloat("22.34.5");//22.34 var num5 = parseFloat("0908.5"); //908.5 var num6 = parseFloat("3.125e7"); //31250000 (了解)String类型
String类型的数据,简单来说,就是由双引号("")和单引号("")包裹起来的都是String类型的数据。
在这里,单引号和双引号都可以用来表示字符串,要注意一点,引号要对称:
String name = "Jhon";//前后引号不一致,错误字符串的拼接
String name = "Tom"; String subString = "name:"+ name; // 如果是数字类型的数据和字符串拼接,那么会默认将数字转换成字符串,然后拼接 String stringNumber = 1 + "string";字符串转换
toString()方法
toString()默认是以十进制的方式去转换的,但是我们可以通过添加参数来规定转换的方式
var num = 10; console.log(num.toString());// "10"--十进制 console.log(num.toString(2));// "1010"---二进制 console.log(num.toString(8));// "12"---八进制 console.log(num.toString(10));// "10"---十进制 console.log(num.toString(16));// "a"---十六进制
String()方法
String()方法的转换规则与toString()方法基本类似,这是因为它的转换规则:
如果被转换的值有toString()方法,就调用toString()方法;
如果被转换值是null,返回null;
如果被转换值是undefined,返回undefined。
var value1 = 30; var value2 = null; var value3 = undefined; console.log(String(value1));//"30" console.log(String(value2));//"null" console.log(String(value3));//"undefined"Object类型
Object类型的数据其实就是一对健值对,健值对就是一个属性对应一个值,对象的创建方式可以有两种,一种是用关键字new创建,一种是用花括号创建:
第一种
var obj = new Object();//创建一个对象 // 给对象添加属性和值 obj.name = "Tom"; obj.age = 20; // 取对象中的值 console.log(obj.name);// "Tom" console.log(obj.age);// 20
第二种
var obj = { "name": "Tom", "age": 20 } // 这里是两种取值方式 console.log(obj.name); //"Tom" console.log(obj.age); //20 console.log(obj["name"]); //"Tom" console.log(obj["age"]); //20
下面的这些知识点可以作为了解,后面会细讲
参考文献:Object 的每个实例都具有下列属性和方法:
constructor:保存着用于创建当前对象的函数。构造函数(constructor) 就是 Object();
hasOwnProperty(propertyName):检查给定的属性在当前对象实例中(而不是在实例 的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例 如:o.hasOwnProperty("name"));
isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型;
propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用 for-in 语句来枚举。与 hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定;
toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应;
toString():返回对象的字符串表示;
valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值相同。
《JavaScript高级程序设计》
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/106897.html
摘要:年,以为蓝本的建议被提交给了欧洲计算机制造商协会,。而且给未经声明的变量赋值在严格模式下会导致抛出的错误。这也正是使用操作符检测值时会返回的原因。函数检查过程是。但是这个转换过程会导致特殊的和值应用位操作时,这两个值会被当成来处理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要为 JavaScript 的一些常见知识点,是我在 JavaScrip...
摘要:年,以为蓝本的建议被提交给了欧洲计算机制造商协会,。而且给未经声明的变量赋值在严格模式下会导致抛出的错误。这也正是使用操作符检测值时会返回的原因。函数检查过程是。但是这个转换过程会导致特殊的和值应用位操作时,这两个值会被当成来处理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要为 JavaScript 的一些常见知识点,是我在 JavaScrip...
摘要:年,以为蓝本的建议被提交给了欧洲计算机制造商协会,。而且给未经声明的变量赋值在严格模式下会导致抛出的错误。这也正是使用操作符检测值时会返回的原因。函数检查过程是。但是这个转换过程会导致特殊的和值应用位操作时,这两个值会被当成来处理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要为 JavaScript 的一些常见知识点,是我在 JavaScrip...
摘要:作用域链的作用就是做标示符解析。事件循环还有个明显的特点单线程。早期都是用作开发,单线程可以比较好当规避同步问题,降低了开发门槛。单线程需要解决的是效率问题,里的解决思想是异步非阻塞。 0、前言 本人在大学时非常痴迷java,认为java就是世界上最好的语言,偶尔在项目中会用到一些javascript,但基本没放在眼里。较全面的接触javascript是在实习的时候,通过这次的了解发现...
阅读 2247·2021-11-25 09:43
阅读 2934·2019-08-30 15:52
阅读 1884·2019-08-30 15:44
阅读 973·2019-08-30 10:58
阅读 752·2019-08-29 18:43
阅读 3207·2019-08-29 18:36
阅读 2309·2019-08-29 17:02
阅读 1446·2019-08-29 17:01