2020-09-21 JS之变量和数据类型

一、Javascript简介

1、javascript用途

一般是用来编写客户脚本,为HTML页面添加交互行为,是前台语言,而不是后台语言(node.js除外)
总结JavaScript的特点
1)、解释执行(浏览器就是解释器):事先不编译,逐行执行,无序进行严格的变量声明
2)、简单易用:可以使用任何文本编辑工具编写,只需要浏览器就可以执行程序。
3)、基于对象:内置大量现成对象,编写少量程序可以完成目标。

2、JavaScript组成

1)、ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。
2)、文档对象模型(DOM) Document object model:操作网页上的元素的API。比如让盒子移动、变色、轮播图等。
3)、浏览器对象模型(BOM) Broswer object model:操作浏览器部分功能的API。比如让浏览器自动滚动。

3、ECMAscript和JavaScript的关系

ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)
通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,所以ECMAScript可
以理解为是javascript的一个标准,而javascript是ECMA-262标准的实现和扩展。
前者是后者的标准,后者是前者的一种实现。

二JavaScript引入方式

1、方式一

2、方式二
  导入文件

三JavaScript语法规范

1)、JavaScript对换行,缩进,空格不敏感
ps;每一条语句末尾要加上分号,虽然分号不是必须加的,但是为了程序今后要压缩,如果不加分号,压缩后将不能运行。
2)、所有的符号,都是英语的,比如括号,引号,分号。
3)、JavaScript的注释

单行注释:
// 我是注释
多行注释:
/*
多行注释1
多行注释2
*/

四、变量

1、声明变量的语法

1)、先声明后定义

var name;//声明变量时无需指定类型,变量name可以接收任意类型
name=’egon‘;

2)、声明立刻定义

var age=18;

js是弱类型、动态语言

1)、弱类型、强类型

按照计算机语言的类型系统的设计方式,可以分为强类型和弱类型两种。二者之间的区别,就在于计算时是否可以不同类型之间对使用者透明地隐式转换。从使用者的角度来看,如果一个语言可以隐式转换它的所有类型,那么它的变量、表达式等在参与运算时,即使类型不正确,也能通过隐式转换来得到正确地类型,这对使用者而言,就好像所有类型都能进行所有运算一样,这样的语言被称作弱类型

2)、动态语言,静态语言

动态语言:声明变量时无需指定类型
静态语言:声明变量时必先指定类型

3)、JavaScript是一种弱类型、动态语言,弱类型具体表现如下

2.1、一般规律是,约束越强越不容易出错,但编写程序时也越麻烦。在JavaScript中,因为约束比较弱,所以容易出现这种错误:最简单的例子:

 var a =200;


 var b ="1";


 var c= a + b;


你可能期望c是201,但实际上它是"2001",这个错误在强类型语言中决不会出现。然而正是因为JavaScript没有这些约束,所以可以很方便地拼接数字和字符串类型。

2.2、再比如下面这个例子:

var a = '11';
a = a - '';
alert(typeof a);// -->number
“-”可以是一元运算符(取负),也可以是二元(减法运算)

js是弱类型语言

2、变量名命名规范

1)、由字母,数字,下划线,$组成,但是不能数字开头,也不能纯数字

2)、严格区分大小写

3)、不能包含关键字和保留字(以后升级版本要用的关键字)。

如:abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto
implements、import、int、interface、long、native、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile

4)、推荐驼峰命名法:有多个有意义的单词组成名称的时候,第一个单词的首字母小写,其余的单词首字母写

5)、匈牙利命名:就是根据数据类型单词的的首字符作为前缀

3、ES6中let

ES6之前js没有块级作用域,ES6新增了let命令,用于声明变量(声明的变量属于块级作用域),流程控制语句的{}就是块级作用域。其用法类似于var,
但是所声明的变量只在let命令所在的代码块内有效。例如:for循环的计数器就很适合使用let命令。
for(let i=1;i<=5;i++){}

4、常量

ES6新增const用来声明常量。一旦声明,其值就不能改变。

const PI = 3.1415926;
PI=3 //TypeError: "PI" is read-only

五、数据类型与内置方法

js时动态语言:变量里面能够存储数字,字符串等,变量会自动的根据存储内容的类型不同,来决定自己的类型。
1)、数值
JavaScript不区分整型和浮点型,就只有以中国数字类型,即number

var x = 3;
var y = 3.1;
var z = 13e5;
var m = 13e-5;
var n = NaN; // typeof n结果"number"

四舍五入

var num=1.3456
num.toFixed(2) // "1.35"

字符串转成数字

字符串转numbber

parseInt("123")  // 返回123

NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。

parseInt("ABC")  // 返回NaN

带有自动净化的功能;只保留字符串最开头的数字,后面的中文自动消失。例如:

console.log(parseInt("18林海峰")); //18

只去末尾的中文,不会去开头的

console.log(parseInt("林海峰18")); // NaN

字符串中的数字转浮点

parseInt("123.456")  // 返回123
parseFloat("123.456")  // 返回123.456

自动带有截断小数的功能:取整,不四舍五入

var a = parseInt("1.3") + parseInt("2.6"); //a=3

var a = parseFloat("1.3") + parseFloat("2.6"); //a=3.9

数字转成字符串类型

var x=10;
var y='20';
var z=x+y; // z='1020'
typeof z; //String

数字转成字符串类型

var m=123;
var n=String(m)

var a=123;
var b=a.toString()

2、字符串(string)

var a = "Hello"
var b = "world;
var c = a + b;
console.log(c);  // 得到Helloworld

常用方法:

方法 说明
.length 返回长度
.trim() 移除空白
.trimLeft() 移除左边的空白
.trimRight() 移除右边的空白
.charAt(n) 返回第n个字符
.concat(value, ...) 拼接,拼接字符串通常使用“+”号
.indexOf(substring, start) 子序列位置 a.indexOf('a',1,3); 3
.substring(from, to) 根据索引获取子序列
.slice(start, end) 切片
.toLowerCase() 小写
.toUpperCase() 大写
.split(delimiter, limit) 分割

string.slice(start, stop)和string.substring(start, stop):

slice和substring的区别
两者的相同点:
如果start等于end,返回空字符串
如果stop参数省略,则取到字符串末
如果某个参数超过string的长度,这个参数会被替换为string的长度

substirng()的特点:
如果 start > stop ,start和stop将被交换
如果参数是负数或者不是数字,将会被0替换

silce()的特点:
如果 start > stop 不会交换两者
如果start小于0,则切割从字符串末尾往前数的第abs(start)个的字符开始(包括该位置的字符)
如果stop小于0,则切割在从字符串末尾往前数的第abs(stop)个字符结束(不包含该位置字符)

补充:

ES6中引入了模板字符串。模板字符串(template string)是增强版的字符串,用反引号(`)标识,它的用途为

1)、完全可以当做普通字符串使用

var msg = `my name is egon`

2)、也可以用来定义多行字符串

var info = `
    name:egon
    age:18
    sex:male
`

3)、并且可以在字符串中嵌入变量

var name = "egon";
var age = 18;
var msg = `my name is ${name}, my age is ${age}`;

注意:

如果模板字符串中需要使用反引号,则在其前面要用反斜杠转义。

3、布尔值(Boolean)

区别于python,true和false都是小写
var a=true;
var b=false;
任何数据类型都可以转换为Boolean类型:空字符串,0,null,undefined,NaN都是false。

布尔值为假的数据类型

Boolean('')
Boolean(0)
Boolean(null)
Boolean(undefined)
Boolean(NaN)

其余数据类型的布尔值均为真,例如

Boolean([])
Boolean(123)

4、null和undefined

·null表示值时空,一般在需要指定或清空一个变量时才会使用,如name=null。
·undefined表示当声明一个变量但为初始化时,该变狼的默认值时undefined,还有就是
函数无明确的返回值时,返回的也是undefined。
null表示变量的值是空,undefined则表示只是声明了变量,但还没有赋值。

5、常用内置对象

JavaScript中的所有事物都是对象:字符串、数值、数组、函数。。。
此外JavaScript还提供多个内建对象,比如Array,Date,Math 等等
对象只是带有属性和方法的特殊数据类型。

你可能感兴趣的:(2020-09-21 JS之变量和数据类型)