资讯专栏INFORMATION COLUMN

JavaScript--1.基本概念

haoguo / 3277人阅读

摘要:布尔类型的数据类型转换在中,可以将所有的数据类型的值转换为布尔类型的值。

语法 区分大小写
`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操作符

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);//function
Undefined类型

Undefined只有一个值,即undefined。对于声明了但是没有初始化的变量,其值就是一个undefined

var name;
console.log(name == undefined);// true
// 这个例子类似于
var name = undefined;
console(name == undefined);// true
Null类型

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有两个字面值:truefalse

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和NaNfalse

Object类型,任何对象为truenullfalse

比如我们可以用字符串的非空作为判断的条件:

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

相关文章

  • Awe JavaScript [1] 基本概念

    摘要:年,以为蓝本的建议被提交给了欧洲计算机制造商协会,。而且给未经声明的变量赋值在严格模式下会导致抛出的错误。这也正是使用操作符检测值时会返回的原因。函数检查过程是。但是这个转换过程会导致特殊的和值应用位操作时,这两个值会被当成来处理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要为 JavaScript 的一些常见知识点,是我在 JavaScrip...

    CloudwiseAPM 评论0 收藏0
  • Awe JavaScript [1] 基本概念

    摘要:年,以为蓝本的建议被提交给了欧洲计算机制造商协会,。而且给未经声明的变量赋值在严格模式下会导致抛出的错误。这也正是使用操作符检测值时会返回的原因。函数检查过程是。但是这个转换过程会导致特殊的和值应用位操作时,这两个值会被当成来处理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要为 JavaScript 的一些常见知识点,是我在 JavaScrip...

    zollero 评论0 收藏0
  • Awe JavaScript [1] 基本概念

    摘要:年,以为蓝本的建议被提交给了欧洲计算机制造商协会,。而且给未经声明的变量赋值在严格模式下会导致抛出的错误。这也正是使用操作符检测值时会返回的原因。函数检查过程是。但是这个转换过程会导致特殊的和值应用位操作时,这两个值会被当成来处理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要为 JavaScript 的一些常见知识点,是我在 JavaScrip...

    tomato 评论0 收藏0
  • 理解javascript核心知识点

    摘要:作用域链的作用就是做标示符解析。事件循环还有个明显的特点单线程。早期都是用作开发,单线程可以比较好当规避同步问题,降低了开发门槛。单线程需要解决的是效率问题,里的解决思想是异步非阻塞。 0、前言 本人在大学时非常痴迷java,认为java就是世界上最好的语言,偶尔在项目中会用到一些javascript,但基本没放在眼里。较全面的接触javascript是在实习的时候,通过这次的了解发现...

    laznrbfe 评论0 收藏0

发表评论

0条评论

haoguo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<