Javascript基础一(介绍)
Javascript的发展历史:
JavaScript在设计之初只是为了做表单验证。但是现如今,JavaScript已经成为了一门功能全面的编程语言,已经是WEB中不可缺少的一部分,如今的JavaScript是一门既简单又复杂的语言,说它简单是因为可能一小时就能学会,但是如果你要真正掌握它,可能就得需要个几年的时间了。
JavaScript的组成:
ECMAScript是一个标准,它规定了语法、类型、语句、关键字、保留子、操作符、对象。(相当于法律)
BOM(浏览器对象模型):可以访问浏览器窗口的浏览器对象模型,对浏览器窗口进行操作。
DOM(文档对象类型):DOM把整个页面映射成一个多层节点结构。HTML页面组成都是某种类型的节点,这些节点又包含着不同类型的数据。
JavaScript和Html5的关系:
如何编写及运行JS:
JS也是一种脚本语言,他可以有两种方式在HTML页面进行引入,一种是外联,一种是内部。
外联JS的写法为:
<script src="相对路径"></script>
<script>
//在script标签内写js脚本
</script> 错误的写法:
<script src="相对路径">
//在script标签内写js脚本
</script>
向页面中打印内容:
变量:
JavaScript 变量是存储数据值的容器。
var x = 7;
var y = 8;
var z = x + y; //x、y 和 z 是变量:
从上例中,你可以获得:
- x 存储值 7
- y 存储值 8
- z 存储值 15
注意:JS中的“=”号,和数学中的“=”不一样,在JS中“=”的作用是赋值(取名字)。
变量的类型(数据类型)
变量命名规则和关键字的介绍:
- 名字中只能包含 字母、数字、下划线、$、(中文)
- 不能以数字开头
- 不能是保留字或关键字
- 具有相关含义
- 驼峰命名
- 大驼峰:如ZhongHuaRenMinGongHeGuo
- 小驼峰:如zhongHuaRenMinGongHeGuo
- 匈牙利命名法:
- Int iNum:以i开头的变量存储整数
- Float fNum:以f开头的变量存储小数
- Boolean bBoo:以b或bo开头的变量存储布尔变量
- String sStr:以s开头的变量存储一个字符串
- Char cCh:以c开头的变量存储一个字符
- Object obj:以o开头的变量存储对象
- Array arr:以arr开头的变量存储数组
- Function fn:以fn开头的变量存储函数
break
|
do
|
instanceof
|
typeof
|
case
|
else
|
new
|
var
|
catch
|
finally
|
return
|
void
|
continue
|
for
|
switch
|
while
|
debugger*
|
function
|
this
|
with
|
default
|
if
|
throw
|
delete
|
in
|
try
|
|
|
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
|
|
算术、赋值、关系运算符:
算术运算符: +加法 -减法 *乘法 /除法 %取余
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 系数 |
++ | 递加 |
-- | 递减 |
【注】+号,有两层意思,第一层算数之间的加法;第二层字符串的连接;执行过程中,先检测加号两边的数据类型,如果发现字符型,那就先 生效字符的连接
赋值运算符:= += -= *= /= %=
运算符
|
例子
|
等价于
|
运算结果
|
= | y = 6 | y = 6 | y = 6 |
+= | y += 1 | y = y+1 | y = 7 |
-= | y -= 1 | y = y-1 | y = 5 |
*= | y *= 2 | y = y*2 | y = 12 |
/= | y /= 2 | y = y/2 | y = 3 |
%= | y %= 4 | y = y%4 | y = 2 |
关系运算符: < <= > >= == != ===
运算符 | 说明 | 例子 | 运算结果 |
== | 等于 | 2 == 3 | false |
=== | 恒等于(值和类型都要做比较) |
2 === 2
2 === "2"
|
true
false
|
!= | 不等于,也可写作<> | 2 == 3 | true |
> | 大于 | 2 > 3 | false |
< | 小于 | 2 < 3 | true |
>= | 大于等于 | 2 >= 3 | false |
<= | 小于等于 | 2 <= 3 | true |
【提示】语句结束要加分号,虽然不加分号在JS语法上没有什么问题,但是建议不要省略分号,加了分号之后可以使用软件压缩。
变量不同类型之间的自动、手动类型转换:
显式转换的数据类型
1、将非数值转换为数值类型的函数
有3个函数可以把非数值转换为数值:Number()、parseInt()、parseFloat()。
第一个函数Number(mix),可以用于任何数据类型,该函数先将mix的数据类型转换为number类型,然后再将mix的值转换为数值。
若mix的值能直接转换成数字,则直接显示。若不能则显示0或NaN.
而另两个函数则专门用于把字符串转换成数值。
parseInt(string)函数:将字符串转换为数值,不遵循四舍五入。这里的string必须是数字类型的开头字符串,一直遍历到非数值的那个字符才停止。若不是数字开头,则会显示NaN.
<script>
var num = ["123" , "124.4" , "234asd" , "asf456"] ;
for (i = 0; i < num.length; i++) {
console.log(parseInt(num[i]));
}
</script>
执行结果为:123 , 124 , 234 , NaN .
parseFloat(string):将string转换为浮点数。从数字位开始看,直到非数字位结束,用法与parseInt(string)一致。
parseInt()函数还有另一种用法。parseInt(string,radix):
以radix为基底,将string转换成十进制的整数。radix的取值为2-32。
2、将其它类型的数据转换为字符串类型的函数
有两个函数可以把其他数据类型转换为字符串。toString() 和 string() 。
String(mix):将mix转换成字符串类型。该函数可以将任何数据类型的值转换为字符串。
toString()函数有两种用法。,
- 用法一:demo.toString():将demo转换成字符串类型。demo不能等于null undefined
- 用法二:demo.toString(radix):将十进制的数demo转换为目标进制的数。如123.0.toString(8)为将十进制数字123转换为8进制的字符串。
注:不能写成123.toString(8) . 因为浏览器解析的时候会解析成小数。
//例题:把一个二进制的数10001000转换成十六进制的数。
//思路:先把二进制转换成十进制,再由十进制转换成十六进制。
var num1 = parseInt('10001000',2); //
var num2 = num1.toString(16); //'88'
3、将值转换成布尔值类型
Boolean(变量):将一个值转换成其对应的布尔值。
(1)原始类型值的转换方法
以下六个值的转化结果为false,其他的值全部为true。
- undefined
- null
- -0
- +0
- NaN
- ''(空字符串)
(2)对象的转换规则
所有对象的布尔值都是true,甚至连false对应的布尔对象也是true。
Boolean(new Boolean(false))
// true
隐式的数据类型转换
隐式类型的转换是系统进行运算时自动进行的,但是调用的方法都是显式类型转换的方法。
1、递增和递减操作符
a++ ,a-- ,++a , --a
这4个操作符对任何值都适用,也就是他们不仅适用于整数,还可以用于字符串、布尔值、浮点数值和对象,此时伴随着隐式的数据类型转换。
即先将变量通过Number()转换成number的数据类型,然后再进行递增、递减操作。
2、(+)(-),即正负号
不仅适用于整数,还可以用于字符串、布尔值、浮点数值和对象。将变量通过Number()转换成number的数据类型。
3、isNaN(变量)
执行过程为:即先将变量通过Number转换,再进行isNaN() 。
isNaN()函数,该函数判断括号内的值是否是NaN,是就返回true,不是就返回false
【NaN】:是一种特殊的Number类型,代表意外转换的数字,NaN和任何东西都不相等。厉害到自己都不等于自己
alert(NaN == NaN); //返回false
4、(+) 加号
先看下面的一段代码
<script>
var str = 1 + "1";
var num = 1 + 1;
var num1 = 1 + false;
document.write(str , "<br>" , num , "<br>" , num1);
</script>
执行结果为:11 , 2 ,1
所以加法有两个作用。如果没有运算过程中没有字符串时,就将变量通过Number()转换为number类型后,再进行运算。如果有字符串的话,加号两边起的就是字符串连接作用。
5、- * / % 减号,乘号,除号,取余
运算时把数据转换成number类型后,再进行运算。
6、&& || ! 与或非运算
运算符 | 说明 | 例子 | 运算结果 |
&& | 逻辑与(and) |
x = 2;
y = 6;
x>5 && y>5
|
FALSE |
|| | 逻辑或(or) |
x = 2;
y = 6;
x>5 || y>5
|
TRUE |
! | 逻辑非,取逻辑的反面 |
x = 2;
y = 6;
!(x > y)
|
TRUE |
将运算符两边的值转换成通过Boolean()函数转换成布尔类型,然后再进行运算。不同的是,&& || 返回的是比较后自身的原值,而 !运算返回的是布尔值.
看一个例子。
<script>
console.log(5 && 3); //从左往右判断,如果全都为真,则返回最后一个为真的值,只要有一个判断为假,就返回为假的那个值
console.log(0 || 2); //从左往右判断,返回第一个为真的值,若完成了全部的判断且所有的值都为假,就返回最后为假的那个值
console.log(!3);
</script>
返回的结果为:3 , 2 , false.
7、 < > <= >= == != 比较运算符
当数字和字符串比较大小时,会隐示将字符串转换成number类型进行比较。而当字符串和字符串比较大小时,则比较的是ascii码的大小。最后返回的则是布尔值
<script> //1)纯数字之间比较
alert(1<3);//true
//2)数字字符串比较,会将其先转成数字
alert("1"<"3");//true
alert("123"<"123");//false
//3)纯字符串比较,先转成ascii码
alert("a"<"b");//true
alert("abc"<"aad");//false,多纯字母比较,会依次比较ascii码
//4)汉字比较
alert("我".charCodeAt());//
alert("的".charCodeAt());//
alert("我"<"的");//true,汉字比较,转成ascii码
//5)当数字和字符串比较,且字符串为数字。则将数字字符串转为数字
alert(123<"124");//true,下面一句代码得出124的ascii码为49,所以并不是转成 ascii比较
alert("124".charCodeAt());//
//6)当数字和字符串比较,且字符串为非纯数字时,则将非数字字符串转成数字的时候会转换为NaN,当NaN和数字比较时不论大小都返回false.
alert(13>"abc");//false
</script>
下面看一种特殊情况。
<script>
//undefined不发生类型转换
console.log(undefined == undefined); //true
console.log(undefined == 0); //false
console.log(undefined > 0); //false
console.log(undefined < 0); //false
//null不发生类型转换
console.log(null == null); //true
console.log(null == 0); //false
console.log(null > 0); //false
console.log(null < 0); //false
console.log(undefined == null); //true
console.log(NaN == NaN); //false. not a number 不等于任何东西,包括它自己
</script>
在项目工程中,如果用 == 来判断两个数值是否相等,由于会发生隐式类型转换。所以是非常存在非常大的漏洞的。为了解决这一问题。引入了 === (绝对等于)和 !==(绝对不等于)。
<script>
console.log(1 === "1"); //false
console.log(1 === 1); //true
</script>
Javascript基础一(介绍)的更多相关文章
- JavaScript基础DOM介绍和常用操作(5)
day53 参考:https://www.cnblogs.com/liwenzhou/p/8011504.html JavaScript引入方式 location对象 window.location ...
- javaScript基础语法介绍
简介 JavaScript是一种脚本语言. (脚本,一条条的文字命令.执行时由系统的一个解释器,将其一条条的翻译成机器可识别的指令,然后执行.常见的脚本:批处理脚本.T-SQL脚本.VBScript等 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- javascript基础03
javascript基础03 1. 算术运算符 后增量/后减量运算符 ++ ,-- 比较运算符 ( >, <, >=, <=, ==, !=,===,!== ) 逻辑运算符( ...
- javascript基础语法——表达式
× 目录 [1]原始表达式 [2]复杂表达式 前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascr ...
- 【javascript基础】2、函数
前言 我在上一篇[javascript基础]基本概念中介绍了javascript的一些基本概念,多谢大家的阅读和意见,自己写的东西可以被大家阅读,真心高兴,刚开始发布的时候我一直盯着阅读人数,虽然知道 ...
- JavaScript基础---语言基础(1)
写在前面: 通过四篇博客把JS基础中的基础整理一下,方便自己查阅,这些内容对于实际项目开发中也许并不会在意,但是作为JS的语言基础,自觉还是应该熟悉.在完成这三篇博客(JavaScript基础---语 ...
- 《JavaScript基础教程(第8版)》PDF
简介:JavaScript基础教程(第8版)循序渐进地讲述了JavaScript及相关的CSS.DOM.Ajax.jQuery等技术.书中从JavaScript语言基础开始,分别讨论了图像.框架.浏览 ...
随机推荐
- HDFS文件的基本操作
HDFS文件的基本操作: package wjn; import java.io.BufferedInputStream; import java.io.BufferedReader; import ...
- 自定义checkbox(对勾)和radio样式
checkbox: html: <div> <label class="unSelected selected" for="choose"&g ...
- Vue小白篇 -Vue 的模板语法
可以插入任何你想插入的内容,除了 if-else if-else用三元运算符代替 <div id="box"> <!--模板语法--> <h2> ...
- postman使用之四:设置读取变量和切换环境
postman提供了environment管理功能,想要在多个环境中测试,比如在测试环境.灰度环境.生产环境等,只需要用同样的接口,切换下环境即可,非常方便.具体步骤: 设置环境变量 1.点击man ...
- java应用之solr入门篇
前言 solr是apache项目的一款全文搜索应用. 官方文档http://lucene.apache.org/solr/guide/6_6/ 入门流程 1.安装 ---> 2.启动 - ...
- 记一下await用法
async函数会返回一个Promise对象,可以使用then方法添加回调函数, 当async函数有return时,会作为success的参数 当async函数有抛错时,会作为fail的参数. 当函数执 ...
- 卸载Anaconda
conda install anaconda-clean anaconda-clean --yes Anaconda 安装的时候在 .bash_profile中添加了变量: export PATH=& ...
- 根据mysql数据库 定义solr Schema.xml中配置业务域
<!--product--> <field name="product_name" type="text_ik" indexed=" ...
- 在树莓派3B上搭建LAMP
一.安装apache2 sudo apt-get install apache2 在电脑上输入树莓派的网址会有如下显示 二.安装Mysql sudo apt-get install mysql-ser ...
- DM9000驱动网卡编程
DM9000数据发送编程: static int dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev) { unsigned l ...