JavaScript基础
作者: 写代码的小鱼儿
Email:282505458@qq.com
QQ:282505458
微信:15311464808
说明:本文档用于学习交流,可传播可分享,如有错误,请联系小鱼儿,感谢矫正与探讨
http://www.ecma-international.org/memento/TC39.htm
什么是JavaScript
- js 是一种 基于对象 的 弱类型 脚本语言;
- js 是一种 由浏览器解析的 解释型语言
- js 区分大小写
- 轻量级解释型的程序设计语言
- 语言特点:动态,头等函数
- 执行环境:在宿主环境下执行(host environment),浏览器是最常见的 Javascript 宿主环境
作用
JavaScript 被用来改进设计、验证表单、检测浏览器、创建cookies,等等等等。
增加浏览器与用户的互动。
介绍
它最初由Netscape的Brendan Eich设计。JavaScript是甲骨文公司的注册商标。Ecma国际以JavaScript 为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript 实现包含三个部分:ECMAScript,文档对象模型,浏览器对象模型。 Netscape在初将其脚本语言命名为LiveScript,后来Netscape在与Sun合作之后将其改名为 JavaScript。
JavaScript初受Java启发而开始设计的,目的之一就是“看上去像Java”,因此语法上有类 似之处,一些名称和命名规范也借自Java。但JavaScript的主要设计原则源自Self和Scheme。 JavaScript与Java名称上的近似,是当时Netscape为了营销考虑与Sun微系统达成协议的结果。为了取 得技术优势,微软推出了JScript来迎战JavaScript的脚本语言。为了互用性,Ecma国际(前身为欧洲计 算机制造商协会)创建了ECMA-262标准(ECMAScript)。两者都属于ECMAScript的实现。尽管 JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的脚本语言来推广和宣传,但是 JavaScript具有非常丰富的特性。
发展初期,JavaScript的标准并未确定,同期有Netscape的JavaScript,微软的JScript和CEnvi的 ScriptEase三足鼎立。1997年,在ECMA(欧洲计算机制造商协会)的协调下,由Netscape、Sun、微 软、Borland组成的工作组确定统一标准:ECMA-262。
意义
JavaScript 发展到现在几乎无所不能。
-
网页特效
-
服务端开发(Node.js)
-
命令行工具(Node.js)
-
桌面程序(Electron)
-
App(Cordova)
-
控制硬件-物联网(Ruff)
-
游戏开发(cocos2d-js)
什么是JavaScript
-
JavaScript 被设计用来向 HTML 页面添加交互行为。
-
JavaScript 是一种直译式脚本语言(脚本语言是一种轻量级的编程语言),由浏览器直接解析。
-
JavaScript 由数行可执行计算机代码组成。
-
JavaScript 通常被直接嵌入 HTML 页面。
-
JavaScript 是一种解释性语言(就是说,代码执行不进行预编译)。
-
JavaScript是一种弱类型语言
-
JavaScript 区分大小写
Java 和 JavaScript 是相同的吗?
不同!
在概念和设计方面,Java 和 JavaScript 是两种完全不同的语言。
Java(由太阳微系统公司开发)很强大,同时也是更复杂的编程语言,就像同级别的 C 和 C++。
组成
ECMAScript – 标准,基本语法。JavaScript核心
ECMA 欧洲计算机制造联合会
网景:JavaScript
微软:JScript 定义了JavaScript的语法规范
JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标 准与具体实现无关。
BOM – 浏览器对象模型
描述了与浏览器进行交互的方法和接口。,比如:弹出框、控制浏览器跳转、获取分辨率等
DOM – 文档对象模型
描述了处理网页内容的方法和接口
JavaScript 书写位置
(1)写在HTML标签中
< input type="button" value="提交" οnclick="alert('hello world')">
(2)写在script标签中
<head>
<script>
alert('Hello World!');
</script>
</head>
(3)写在外部js文件中,然后在页面使用标签引入
注意:引用外部 js文件的 script标签中不可以写 JavaScript代码
一般放在html文档的最后,body标签之前,这样能使浏览器更快的加载。
注意事项:
-
script标签在页面中可以出现多对
-
script标签一般是放在body的标签的后,有的时候会在head标签中
-
在一对script的标签中有错误的js代码,那么该错误的代码后面的js代码不会执行
-
如果第一对的script标签中有错误,不会影响后面的script标签中的js代码执行
-
如果script标签是引入外部js文件的作用,那么这对标签中不要写任何的js代码,如果要写,重新 写一对script标签,里面写代码
-
script的标签中可以写属性, type=”text/javascript”是标准写法或者写 language=”JavaScript”都可以,也有可能出现这两个属性同时写的情况,但是,目前在我们的 html页面中,type和language都可以省略,原因:html是遵循h5的标准
-
在js中,回车换行就代表一个语句,后边的分号可以省略不写。但是在开发过程中,我们通常会将js代码压缩,压缩的时候会去掉回车,因此为了避免合并代码出错误,我们不会省略后面的分号。
(4)a 标签中使用(了解即可,不常用)
< a href = "javascript:alert('aaa');" ></a>
什么是变量
变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据 。
作用:操作数据 存储数据、 获取数据
声明变量
var 声明变量
var age;//声明变量
age = 1;//变量赋值
同时声明多个变量
var age, name, sex; age = 10; name = 'zs';
同时声明多个变量并赋值
var age = 10, name = 'zs';
变量的命名规范
规则 – 必须遵守的,不遵守会报错
- 由字母、数字、下划线、$符号组成,
- 不能以数字开头
- 不能是关键字和保留字,例如:for、while。
- 区分大小写
规范 – 建议遵守的,不遵守不会报错
- 变量名必须有意义 遵守驼峰命名法。
- 首字母小写,后面单词的首字母需要大写。例如:userName、 userPassword
- js声明变量都用var js中每一行代码结束加分号
面试题
交换两个变量的值:
//方案一 利用临时变量
var a = 5;
var b = 10;
var t; t = a;//将a的值赋给临时变量t
a = b;//将a 的值赋给b;
b = t;//将t的值赋给b
console.log(a);
console.log(b);
//方案二 让其中一个值变成与他们两个都有关系的值
var num1 = 1;
var num2 = 3;
num1 += num2;//num1赋值为两个数的和
num2 = num1 - num2;//和减去sum2得到sum1的值
num1 -= num2;//再把和减去sum2的值赋给sum1
console.log(num1);
console.log(num2);
//方案三 利用数组
var a1 = 2;
var a2 = 4;
a1 = [a1,a2];//将a1,a2的值作为数组的值赋给a1
a2 = a1[0];
a1 = a1[1];
console.log(a1);
console.log(a2);
//方案四 利用对象,原理同上
var o1 = 4;
var o2 = 6;
o1 = {o1:o2, o2:o1};
o2 = o1.o1;
o1 = o1.o2;
console.log(o1);
console.log(o2);
//方案五 原理还是数组
var aa = 40;
var bb = 20;
aa = [bb,bb = aa][0];
console.log(aa);
console.log(bb);
-
alert(‘弹框内容’);
-
console.log(‘输出内容’);
控制台输出,F12 调出浏览器调试
-
document.write(‘内容’);
页面输出
-
prompt()
可以提交数据的弹框
注释:解释代码含义
作用:解释说明,方便维护,利于团队合作
js注释 单行注释 : //
多行注释 : /* ... */ 一般用在代码段
html注释
css注释 /* … */
php注释 单行注释 //
单行注释 #
多行注释 /* … */
注意:代码中要多加注释,否则不规范
注释的代码不会执行
在编程语言中,能够表示并操作的值的类型叫做数据类型。
强类型语言:必须明确声明变量的数据类型的语言;
弱类型语言:不必须明确类型声明的语言。如js,
按简单复杂分
基本类型:number 、string 、boolean、 undefined 、null
复杂类型:object 、array 、date 、regexp 、function 、基本包装类型、单体内置对象(global、math)
js 的数据类型有:六种 number、string、boolean、undefined、null、object
Number类型
直接量就是可以在程序中直接使用的数据值。
数值字面量
数值的固定值的表示法 110 1024 60.5
进制
十进制
var num = 9;
进行算数计算时,八进制和十六进制表示的数值终都将被转换成十进制数值。
十六进制
var num = 0xA;
数字序列范围:09以及AF
八进制
var num1 = 07; // 对应十进制的7
var num2 = 019; // 对应十进制的19
var num3 = 08; // 对应十进制的8
数字序列范围:0~7 如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析
小数
数值范围
小值:Number.MIN_VALUE,这个值为: 5e-324
大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
无穷大:Infinity 无穷小:-Infinity
var n = 5e-324; // 科学计数法 5乘以10的-324次方
//不要用小数去验证小数
var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004
NaN
not a number 的缩写,undefined 与数值运算得到的结果
它是一个特殊的值,不与任何数相等,包括它自己
var a;
var b = 1;
var c = a + b;
console.log(NaN == NaN);
console.log(isNaN(c));
被0整除不会报错,只是简单的返回无穷大(infinity)或负无穷大(-infinity)。
0除以0无意义,结果为NAN。
console.log(Number.MAX_VALUE);//1.7976931348623157e+308
console.log(Number.MIN_VALUE);//5e-324
console.log(2 / 0);//Infinity 无穷大
isNaN
常用来判断变量是否是数值类型,true 表示不是数值 false表示是数值
var dd = 1;
console.log(isNaN(dd));
string 字符串类型
由单引号或双引号包围
获取字符串的长度
变量.length
var str = 'absfgfeh';
console.log(str.length);
转义字符/字符直面量
字面量 | 含义 |
---|---|
n | 换行 |
t | 制表符,横向跳格 |
b | 空格 |
r | 回车 |
f | 换页符 |
\ | 反斜杠 |
’ | 单引号 |
“ | 双引号 |