JavaScript诞生于1995年,1995年9月曾改为LiveScript。
ECMA 欧洲计算机制造商协会(European Computer Manufacturers Association)
ES脚本语言规范
ECMAScript 2015 对应的是 ECMAScript 6 版本
什么是js?
与网页进行交互的脚本语言,有一定的逻辑性
脚本如何理解?
脚本的特点:辅助,简单,即写即所得
JavaScript 语言的特点
- 脚本语言 即写即所得
- 基于对象 面向对象,同时也支持面向过程
- 简单
- 动态性
- 跨平台性
现在的js可以在客户端运行,也可以在服务端运行
客户端运行: 只要能装浏览器的地方,就能运行js
服务端运行: window server 2012、 linux..基于 nodejs
js的组成部分?
- ECMAScript 核心,定义语法规范,保留字,关键字
- DOM 文档对象模型(document object model)
- BOM 浏览器对象模型(browse object model) 控制浏览器的 前进、后退、关闭、刷新...
js代码例子
alert("hello world!"); //弹窗
document.write("我在页面上,跟alert不一样噢!"); //将内容写到页面中
console.log("我是在控制台打印的, 以后常用我!"); //控制台输出
js的注释
\\单行注释
\*多行注释*\
script标签的属性
- src:表示要引入的外部文件
- type:表示脚本语言的类型 text/javascript,默认值就是它,可忽略不写。
- defer:异步加载,代码加载完,要等到页面解析完后,才执行js。由于大多数浏览器不支持,故很少用。
- async:异步加载,代码加载完,立即执行js。由于大多数浏览器不支持,故很少用。
- charset:表示通过 src 属性指定的字符集。例如,utf-8。由于大多数浏览器忽略它,所以很少有人用它。
【注】 defer和async要和src结合使用
变量的声明
//方法一:
//1.用var声明变量
var sName;//有值,是undefined的值(undefined:未定义)
//2.给变量赋予初始值
sName="刘亦菲";
//方法二:
//直接声明变量并赋予初始值
var sName="刘亦菲";
//如果有多个变量,可用逗号隔开
var sex="女",address="中国";//= 赋值,把右边的值赋给左边;
JS是弱数据类型的语言,容错性较高, 在赋值的时候才确定数据类型
var a; //a是啥数据类型型?undefined a = 12; //a变量是number类型 a ="hello";//a变量变成了string类型
js关键字
已经被JS内部使用了的
| Break | Else | New | var |
| Case | Finally | Return | void |
| Catch | For | Switch | while |
| Continue | Function | This | with |
| Default | If | Throw | |
| Delete | In | Try | |
| Do | Instanceof | Typeof |
js保留字
虽然暂时还未被使用, 但将来可能会被JS内部使用
| Abstract | Enum | Int | short |
| Boolean | Export | Interface | static |
| Byte | Extends | Long | super |
| Char | Final | Native | synchronized |
| Class | Float | Package | throws |
| Const | Goto | Private | transient |
| Debugger | Implements | Protected | volatile |
| Double | Import | Public |
变量的命名规范
- 变量名可以是数字,字母,下划线_和美元符$组成;
- 第一个字符不能为数字
- 不能使用关键字或保留字
- 标识符区分大小写,如:age和Age是不同的变量。但强烈不建议用同一个单词的大小写区分两个变量。
- 变量命名尽量遵守驼峰原则: myStudentScore
- 变量命名尽量见名思意, 可参考下图
JS数据类型
js有6种数据类型
- 值类型 string,number,boolean,null,undefined
- 引用类型 object(Array,Function,Date...)
typeof 变量名:可查看变量的数据类型
NaN 特殊值,非数值
null派生了undefined,所以null==undefined结果为true
相关方法
//isNaN() 判断是否为非数值类型,是数值为false,非数值true。
var num=prompt("请输入一个数字");
console.log(isNaN(num)==false);//输入的是数字就是true,否则为false
//parseInt()转换成整型
var a="12.64"; console.log(parseInt(a));//12
var b="14.32ssslala"; console.log(parseInt(b));//14
var c="sdsd14.32ssslala"; console.log(parseInt(c));//NaN
//parseFloat() 转换成浮点型
var a="12.64"; console.log(parseFloat(a));//12.64
var b="14.32ssslala"; console.log(parseFloat(b));//14.32
var c="sdsd14.32ssslala"; console.log(parseFloat(c));//NaN
//Number() 将纯数字的String转为number类型的数字
var a="12.64"; console.log(Number(a));//12.64
var b="14"; console.log(Number(b));//14
var c="sdsd14.32ssslala"; console.log(Number(c));//NaN
var d="14.32ssslala"; console.log(Number(d));//NaN
//Boolean() 转换成布尔型
console.log(Boolean(0));//false
console.log(Boolean(NaN));//false
console.log(Boolean(-1));//true
console.log(Boolean(1));//true
//toFixed()会四舍五入,并且数据类型变为字符串
var fNum=4.567;
console.log(fNum.toFixed());//5
//Math.round() 四舍五入,数据类型依旧为数值类型
var fNum=4.567;
console.log(Math.round(fNum));//5
类型转换
其他类型转数值类型
//强制转换
var num="200.12"
console.log(parseInt(num)); //200 数值型
console.log(parseFloat(num)); //200.12 数值型
console.log(Number(num)); //200.12 数值型
//隐式转换(-,*,/,%,==)
var num="200";
console.log(num-0); //200
console.log(num/1); //200
console.log(num%201); //200
console.log(num==200); //true ,此时的num是作为一个数值在比较
其他类型转boolean类型
- 字符串转boolean类型,非空字符串为true,空字符串为false
- 数值转boolean类型,0和NaN为false,非0数值为true
- null和undefined始终为false
- 对象始终为true,只要不为null