JS(JavaScript)
JavaScript语法规范:
1.JavaScript对换行,所见,空格不敏感(没有严格的语法规范)
注:每一句末尾要加上分号,虽然分号不是必须的,但为了程序今后压缩,如果不加分号,压缩之后将不能运行
2.所有的符号,都是英文的,包括各种括号引号
3.注释方法:
// 单行注释
/*
多行注释
*/
变量:
var x = 10; //变量初始化
var x; //声明变量 未被赋值则是undefined类型 var x = null; 则为null
x = 10;
var name ="Dimple"; //变量赋值
/*
变量名必须使用字母,下划线(_)$开始
英文字母命名使用驼峰体
不能使用JS中关键字合保留字进行命名
需要严格区分大小写 //varx = 10 和 var X = 10 是不同变量
*/
alert(typeof 变量名) //检验当前变量的数据类型
JavaScript是一种弱类型,动态语言
弱类型,强弱行(理解):
按照计算机语言的类型系统的设计方式,可以分了强类型和弱类型两种,二者之间的区别,就在于计算是否可以不同类型之间对使用者透明的隐式转换,从使用者的角度来
看,如果一个语言可以隐式转换他的所有类型,那么它的 变量,表达式等再参与运算时,即使类型不正确,也能通过隐式转换来得到正确的类型,这对使用者而言,就好像
所有类型都能进行所有运算一样,这样的语言被称为弱类型,反之则为强类型
动态语言,静态语言:
动态语言:声明变量时无需指定类型
静态语言:声明变量时必须先制定类型
ES6中let
ES6之前js没有块级作用域,ES6新增了let命令,用于声明变量(声明的变量属于块级作用域),流程控制语句的{}就是块级作用域。其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效。例如:for循环的计数器就很适合使用let命令。
for(let i=1;i<=5;i++){}
常量
ES6新增const用来声明常量。一旦声明,其值就不能改变。
const PI = 3.1415926;
PI=3 //TypeError: "PI" is read-only
数据类型与内置方法
js是动态语言:变量里面能够存储数字、字符串等。变量会自动的根据存储内容的类型不同,来决定自己的类型。
数值(Number)
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()
字符串(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) | 子序列位置 |
.substring(from, to) | 根据索引获取子序列 |
.slice(start, end) | 切片 |
.toLowerCase() | 小写 |
.toUpperCase() | 大写 |
.split(delimiter, limit) | 分割 |
slice和substring的区别
string.slice(start, stop)和string.substring(start, stop):
两者的相同点:
如果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}`;
注意:
如果模板字符串中需要使用反引号,则在其前面要用反斜杠转义。