JavaScript入门-学习笔记(二)
关于js变量
- 变量,就是一个用来存储数据的容器
- 一般来说,我们的变量都是可以得先声明,再使用,就像是一个东西先必须存在,才能看得见摸得着。然而在js里(es5),可以先使用,后声明。
a = 100;
var b =200;
console.log(a,b)
var a;
输出结果为:100,200
ps:这样的语法在es5里是能够执行的,虽然它不符合我们的逻辑思维。在js里叫做,变量提升。
- 如果在声明变量时,没有赋值,直接打印不会报错,因为它有一个默认的值,undefined,表示未定义的值。
- 变量的类型:js是一种弱语言,变量声明时,它的数据类型不明确,只有在赋值的那一刻,变量的数据类型才确定。
- 变量的重复定义:
var a = 3
var a = a-1;
console.log(a)
//输出结果为2
像这样的语法在Java,c等中,绝对报错,但是在es5中,叫做重复定义。这个逻辑也不符合正常,就好比出生,都是出生一次,没有说有出生两次三次的说法,因此这上面的几个不太符合逻辑的特点,我们知道就行,尽量避开就行。
JavaScript中的7种数据类型
口诀: 3 2 2
三种基本数据类型
- number 数字类型。不区分小数,整数,浮点数,只要是个数,都归类为number类型。
(ps:NaN表示非数字类型,就是除了数字意外的,叫做非数字,他是number的一个属性) - string 字符类型。这个不用多解释,var str = '';'和"都可以
ps:建议不要使用new String('xxxx'),因为这个影响执行速度 - Boolean 布尔类型 。 只有两个值,true/false,非真即假
两个引用数据类型
- Object 对象类型。
//1. 直接用{}创建对象
var obj = {name:'rainbow',age=20,run : function(){
console.log('i love runnning');
}};
//2. 用new关键字实例化一个对象
var obj2 = new Object();
obj2.name = 'rainbow';
obj2.age = 20;
obj.say = function(){
console.log('hello world')
}
- Array 数组类型
//1. 直接用[]创建
var arr = [];//空数组
//2. new
var arr2= new Array();
ps:注意的是,js可以不用给数组一个初始长度,并且这个长度可读可写,但是不建议写,因为可能导致数据丢失
两种特殊数据类型
- undefined
未定义的数据类型 - null
值为null
typeof关键字
typeof就是用来检测一个变量的数据类型
使用方法:typeof 变量名(或者常量名)
赋值运算符
自增自减:a++,++a,a--,--a;
ps:++a 和 a++的区别:
如果单单是一条语句而言,两者并没有什么区别,就仅仅是一条语句而已,执行后,自己都加了1,但是在有赋值和其他复杂的运算时,就有区别了;
e.g.
var a = 8;
++a;
var b = a++;
var c = --b;
console.log(a,b,c);
//输出结果为a,b,c为10,8,8
b = ++a; 先自增,后赋值
b = a++; 先赋值,后自增
比较运算符
- ASCII的比较
d > f false
a > 2 false
查阅ASCII表,记住几个常用的ASCII码值就行了。 - == !=
比较的两边的值是否相等或者不相等,不同的数据类型也可以比较 - === !==
=== 首先比较两边的数据类型是否相等,不相等后面就不再比较了。如果同类型,那么就比较值是否相等。(推荐使用)
!== 就是不全等,===的取反
逻辑运算符
与或非
or and not
逻辑运算 || && !
位运算 | &
三目运算符 A<B?表达式1:表达式2; //true放回表达式1,否则为表达式2
//表示真假的运算
真 假
布尔值 true false
数字 非0 0
字符串 非空 null
短路与和短路或
口诀:
短路与 有0出0,全1为1
短路或 有1出1,全0为0
ps:注意,短路与和短路或在运算时,结果并不是返回true或者false布尔值,而是返回左边或右边具体的值。比如
//短路与
console.log(1 && 1);//1
console.log(19 && 20);//20
console.log(0 && 20);//0
//短路或
console.log( true || 1)//true
console.log( '' || 1 )//1
console.log( ' ' || 1 )//' ' 空格不是空
字符串拼接
自动转换
1. number -> string
console.log(1+2+'3')//输出:33 字符串类型
console.log('1'+4+6+9) //1469
console.log(10+8+'1'+4+6) //18146
2. string -> number
console.log(1+2+'3'-4);//输出29,number类型
console.log(true + 1);//3 number
console.log(true - 1);//0 number
ps:如果字符串出现在最左边,那么后面的数字都会拼接。
如果字符串出现在最右边,那么前面的数字都会相加,再拼接。
强制转换
首先我们需要理解一个知识,什么是包装类?
它其实就是把几种基本的数据类型(除了undefined和null),封装成一个类,并给这个类添加属性和方法。
实例化
我们打印一下这个未实例化的Number,输出的是?
console.log(Number);
//结果:ƒ Number() { [native code] },是一个function
//实例化后
console.log(new Number(2));
//结果:Number {2}
__proto__: Number[[PrimitiveValue]]: 2
字符串转数字
var a = 1;
var b = '2';
转换:
b = Number(b);//这个时候就相当于调用了Number方法,返回一个number类型数据
//a + b 等于 3,number类型
ps:如果b是含有数字之外的字符,那么无法正常转换,结果为NaN。
parseInt()
去掉小数点后面的数,转为整数。
如果是字符串,也可以转,但是得看情况:
1.parseInt('12px'); // 结果为12
2.parseInt('px12'); // 结果为NaN
parseFloat()
没啥用,和parseInt区别不大。虽然方法名以为是转为浮点数,但是实际效果不会带有小数点。
toString()
一般用于字符串的拼接,obj.toString(1+2+'3d')//33d
JavaScript入门-学习笔记(二)的更多相关文章
- JavaScript正则表达式学习笔记(二) - 打怪升级
本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...
- JavaScript入门-学习笔记(一)
JavaScript入门(一) 学习js之前,我们先来了解一下,什么是JavaScript? JavaScript是一种解释型语言.在运行的时候,一边读一边编译一边执行.简单来说就是,在执行js代码时 ...
- JavaScript入门学习笔记(二)
JavaScript运算符: 算术运算符.赋值运算符和字符串连接运算符. 算法运算符与复制运算符用法参照Java: 字符串运算符: +运算符用于把文本值或字符串变量连接起来,适用于两个或更多字符串变量 ...
- JavaScript入门学习之二——函数
在前一章中讲了JavaScript的入门语法,在这一章要看看函数的使用. 函数的定义 JavaScript中的函数和Python中的非常类似,只不过定义的方式有些不同,下面看看是怎么定义的 //定义普 ...
- javascript入门学习笔记2
JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: 实例 var x // x 为 undefined var x = 6; // x 为数字 var x = "Bil ...
- javascript入门学习笔记
<button type="button" onclick="alert('Welcome!')">点击这里</button>alert ...
- JavaScript入门学习笔记(JSON)
JSON是JavaScript Object Notation的简称,是一种轻量级的数据交换格式. JSON使用JS的语法,但其格式只是一个文本,可以被任何编程语言读取病作为数据格式传递. JSON以 ...
- JavaScript入门学习笔记(异常处理)
try:语句测试代码块的错误,当try中的代码块出错时执行catch中的代码块. catch:语句处理错误: throw:语句创建或抛出自定义异常. 三者一起使用可以控制程序流并生成自定义异常信息. ...
- JavaScript入门学习笔记(一)
W3cJavaScript教程 JS是JavaScript的缩写,而JSP是Java Server Page的缩写,后者是用于服务器的语言. JavaScript代码写在标签<script> ...
随机推荐
- .NET Core集成SkyWalking+SkyAPM-dotne实现分布式链路追踪
.NET Core集成SkyWalking+SkyAPM-dotnet实现分布式链路追踪 SkyWalking是一款APM(应用性能管理),其他的还有Cat.Zipkin.Pinpoint等. 随着微 ...
- AcWing 317. 陨石的秘密
1 -> {} 2 -> [] 3 -> () \(f[d][a][b][c]\) 表示 \([i * 2 - 1, j * 2]\) 这段区间 深度为 d \(1\) 有 \(a\ ...
- SpringBoot如何利用Actuator来监控应用?
目录 Actuator是什么? 快速开始 引入依赖 yml与自动配置 主程序类 测试 Endpoints 官方列举的所有端点列表 启动端点 暴露端点 配置端点 发现页面 跨域支持 实现一个定义的端点 ...
- GaussDB(DWS)应用实践丨负载管理与作业排队处理方法
摘要:本文用来总结一些GaussDB(DWS)在实际应用过程中,可能出现的各种作业排队的情况,以及出现排队时,我们应该怎么去判断是否正常,调整一些参数,让资源分配与负载管理更符合当前的业务:或者在作业 ...
- bbed工具安装
1.上传bbedus.msb bbedus.msg sbbdpt.o ssbbded.o四个文件到数据库服务器 [oracle@edgzrip1-PROD1 bbed_10g_src_x32]$ ...
- 庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署
庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署 一.简介 从今天开始,不出意外的话,以后所写的文章中所介绍项目的部署环境都应该会迁移到Linux环境上,而且是 ...
- el-collapse header修改
先看一下修改后的效果 修改前el-collapse效果 对比一下 原版el-collapse的icon在右边,而我们UI设计是在最左边,而且右边还要加上此el-collapse-item的长度. 实现 ...
- CentOS 7 mini版本安装后必须要做的几件事
Linux家族非常的庞大,诸如Debian.Ubuntu.RedHat.CentOS.ArchLinux.Gentoo,甚至还有国内比较有名的Deepin,都是Linux家族闪耀的明星.根据实际需求涉 ...
- CMake将生成的可执行文件保存到其他目录
在运行一些程序的时候,我们一般会把数据文件放在其他位置.而当在修改程序时,需要不断的修改代码,编译,执行.每次编译之后,都得将可执行文件复制到数据文件的目录. 这一问题有两种解决方法,一是直接在数据目 ...
- phpMyadmin(CVE-2018-12613)后台任意文件包含漏洞分析
前言 影响版本:4.8.0--4.8.1 本次复现使用4.8.1 点击下载 复现平台为vulhub.此漏洞复现平台如何安装使用不在赘述.请自行百度. 漏洞复现 漏洞环境启动成功. 访问该漏洞地 ...