JS基础

118 阅读4分钟

JavaScript诞生于1995年,1995年9月曾改为LiveScript。

ECMA 欧洲计算机制造商协会(European Computer Manufacturers Association)

ES脚本语言规范

ECMAScript 2015 对应的是 ECMAScript 6 版本

什么是js?

与网页进行交互的脚本语言,有一定的逻辑性

脚本如何理解?

脚本的特点:辅助,简单,即写即所得

JavaScript 语言的特点

  1. 脚本语言 即写即所得
  2. 基于对象 面向对象,同时也支持面向过程
  3. 简单
  4. 动态性
  5. 跨平台性
    现在的js可以在客户端运行,也可以在服务端运行
    客户端运行: 只要能装浏览器的地方,就能运行js
    服务端运行: window server 2012、 linux..基于 nodejs

js的组成部分?

  1. ECMAScript 核心,定义语法规范,保留字,关键字
  2. DOM 文档对象模型(document object model)
  3. 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内部使用了的

BreakElseNewvar
CaseFinallyReturnvoid
CatchForSwitchwhile
ContinueFunctionThiswith
DefaultIfThrow
DeleteInTry
DoInstanceofTypeof

js保留字

虽然暂时还未被使用, 但将来可能会被JS内部使用

AbstractEnumIntshort
BooleanExportInterfacestatic
ByteExtendsLongsuper
CharFinalNativesynchronized
ClassFloatPackagethrows
ConstGotoPrivatetransient
DebuggerImplementsProtectedvolatile
DoubleImportPublic

变量的命名规范

  1. 变量名可以是数字,字母,下划线_和美元符$组成;
  2. 第一个字符不能为数字
  3. 不能使用关键字或保留字
  4. 标识符区分大小写,如:age和Age是不同的变量。但强烈不建议用同一个单词的大小写区分两个变量。
  5. 变量命名尽量遵守驼峰原则: myStudentScore
  6. 变量命名尽量见名思意, 可参考下图

image.png

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