Javascript的发展历史:

JavaScript在设计之初只是为了做表单验证。但是现如今,JavaScript已经成为了一门功能全面的编程语言,已经是WEB中不可缺少的一部分,如今的JavaScript是一门既简单又复杂的语言,说它简单是因为可能一小时就能学会,但是如果你要真正掌握它,可能就得需要个几年的时间了。

JavaScript的组成:

ECMAScript是一个标准,它规定了语法、类型、语句、关键字、保留子、操作符、对象。(相当于法律)

BOM(浏览器对象模型):可以访问浏览器窗口的浏览器对象模型,对浏览器窗口进行操作。

DOM(文档对象类型):DOM把整个页面映射成一个多层节点结构。HTML页面组成都是某种类型的节点,这些节点又包含着不同类型的数据。

JavaScript和Html5的关系:

 HTML5是一种新的技术,就目前而言,我们所知的HTML5都是一些标签,但是有了JS之后,这些标签深层的扩展功能才得以实现。
 
    比如video标签,我们对其理解为一个简单的标签,但实际上,video标签还有更深层次的扩展功能。
 

如何编写及运行JS:

JS也是一种脚本语言,他可以有两种方式在HTML页面进行引入,一种是外联,一种是内部。

外联JS的写法为:

 <script src="相对路径"></script>
这是一条html语句,原则上可以放在html页面的任意位置,不用和link标签一样非得放在head部分
相对路径链接的是JavaScript文件,文件的扩展名为.js,如index.js
 
内部JS的写法为:
<script>
//在script标签内写js脚本
</script> 错误的写法:
<script src="相对路径">
//在script标签内写js脚本
</script>

向页面中打印内容:

document.write(“这是一些文本内容”);
 
    可以直接解析标签:
        document.write(“<strong>加粗的内容</strong>”);
 
    转义字符:
        &lt;  ====  <
        &gt;  ====  >
        document.write(“&lt;strong&gt;这是一些加粗的内容</strong>”);
 
 
console.log("hello world")
向浏览器的控制台打印信息,跟document.write()原理类似
 
alert()方法
    alert()方法用来停止浏览器加载代码,并弹出()里面的内容。
    浏览器解析代码的顺序(从上到下,从左到右)
 

变量:

  JavaScript 变量是存储数据值的容器。

   var是一个关键字,用来声明一个变量;
  =  表示赋值(取名字);
 
    声明变量以“=”为区分,左边为变量名(被赋值),右边为存放进变量中的内容(给变量赋值)。
 
var x = 7;
var y = 8;
var z = x + y; //x、y 和 z 是变量:

从上例中,你可以获得:

  • x 存储值 7
  • y 存储值 8
  • z 存储值 15

注意:JS中的“=”号,和数学中的“=”不一样,在JS中“=”的作用是赋值(取名字)。

变量的类型(数据类型)

  数值类型(number):1234567890
 
    字符类型(string):"123"  'asd'  "文字"   "数据"(被单引号或双引号,包裹的部分,引号必须配套使用)
 
      定义了未赋值类型(undefined):这是一种特殊类型,当变量被声明,但是没有被赋值的时候,那么该变量的类型的undefined
 
      布尔值类型(boolean):true,false  (真,假)
    
      对象类型(object):{}object
 
      数组类型(array):[]
 
  如何区分或得知不同的数据类型:
            通过关键字  typeof 变量名
 

变量命名规则和关键字的介绍:

  1. 名字中只能包含 字母、数字、下划线、$、(中文)
  2. 不能以数字开头
  3. 不能是保留字或关键字
  4. 具有相关含义
  5. 驼峰命名
    1. 大驼峰:如ZhongHuaRenMinGongHeGuo
    2. 小驼峰:如zhongHuaRenMinGongHeGuo
  6. 匈牙利命名法:
    1. Int   iNum:以i开头的变量存储整数
    2. Float  fNum:以f开头的变量存储小数
    3. Boolean  bBoo:以b或bo开头的变量存储布尔变量
    4. String  sStr:以s开头的变量存储一个字符串
    5. Char  cCh:以c开头的变量存储一个字符
    6. Object  obj:以o开头的变量存储对象
    7. Array  arr:以arr开头的变量存储数组
    8. 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

 前自增与后自增有本质的区别,他们相同点都是为自身加了1,不同点是
        前自增是先加1,再使用操作数的值
        后自增是先使用操作数的值,再加1
 

这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基础一(介绍)的更多相关文章

  1. JavaScript基础DOM介绍和常用操作(5)

    day53 参考:https://www.cnblogs.com/liwenzhou/p/8011504.html JavaScript引入方式 location对象 window.location ...

  2. javaScript基础语法介绍

    简介 JavaScript是一种脚本语言. (脚本,一条条的文字命令.执行时由系统的一个解释器,将其一条条的翻译成机器可识别的指令,然后执行.常见的脚本:批处理脚本.T-SQL脚本.VBScript等 ...

  3. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  4. 前端之JavaScript基础

    前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...

  5. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  6. javascript基础03

    javascript基础03 1. 算术运算符 后增量/后减量运算符 ++ ,-- 比较运算符 ( >, <, >=, <=, ==, !=,===,!== ) 逻辑运算符( ...

  7. javascript基础语法——表达式

    × 目录 [1]原始表达式 [2]复杂表达式 前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascr ...

  8. 【javascript基础】2、函数

    前言 我在上一篇[javascript基础]基本概念中介绍了javascript的一些基本概念,多谢大家的阅读和意见,自己写的东西可以被大家阅读,真心高兴,刚开始发布的时候我一直盯着阅读人数,虽然知道 ...

  9. JavaScript基础---语言基础(1)

    写在前面: 通过四篇博客把JS基础中的基础整理一下,方便自己查阅,这些内容对于实际项目开发中也许并不会在意,但是作为JS的语言基础,自觉还是应该熟悉.在完成这三篇博客(JavaScript基础---语 ...

  10. 《JavaScript基础教程(第8版)》PDF

    简介:JavaScript基础教程(第8版)循序渐进地讲述了JavaScript及相关的CSS.DOM.Ajax.jQuery等技术.书中从JavaScript语言基础开始,分别讨论了图像.框架.浏览 ...

随机推荐

  1. Python二分查找算法

    Python 二分查找算法: 什么是二分查找,二分查找的解释: 二分查找又叫折半查找,二分查找应该属于减值技术的应用,所谓减值法,就是将原问题分成若干个子问题后,利用了规模为n的原问题的解与较小规模( ...

  2. 小程序中使用async函数 会报 regeneratorRuntime is not defined的问题

    async await比Promise更好的解决异步操作问题,但是在小程序中直接使用会出现以下的错误提示 是因为缺少了regeneratorRuntime这个模块,需要从外部引入 1.在新建的文件夹中 ...

  3. WordPress 页面点击显不同颜色爱心

    在主题的页脚添加以下js即可实现 <script type="text/javascript"> /* * https://www.xianjieo.cn */ !fu ...

  4. 转载:tomcat性能的优化

    考虑一下这种场景,你开发了一个应用,它有十分 优秀的布局设计,最新的特性以及其它的优秀特点.但是在性能这方面欠缺,不管这个应用如何都会遭到客户拒绝.客户总是期望它们的应用应该有更好的性能.如 果你在产 ...

  5. [转]DesignWare是什么

    一.DesignWare是什么 摘自https://zhidao.baidu.com/question/473669077.html DesignWare是SoC/ASIC设计者最钟爱的设计IP库和验 ...

  6. centos 6.5 安装 zookeeper

    从zookeeper官方网站下载安装包:zookeeper-3.4.9.tar.gz,解压安装 tar xvf zookeeper-3.4.9.tar.gz -C /usr/java cd /usr/ ...

  7. 【leetcode】654. Maximum Binary Tree

    题目如下: Given an integer array with no duplicates. A maximum tree building on this array is defined as ...

  8. hdu 6085 Rikka with Candies (set计数)

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...

  9. 【HDU6602】Longest Subarray【线段树+分治】

    题目大意:给出一串序列,询问最长的合法子串为多长,其中合法子串必须满足子串中[1,C]的数量大于等于K或者为0 题解: 定义右端点为包含某一点所需要的最小区间的右端点 那么初始化时就可以O(n)求出每 ...

  10. toleft时设置TabSequence属性为tsReversetoright时设置TabSequence属性为tsStandard

    使用这2人控件时,属性taborientation设为toleft时有个问题,具体如下设为toleft时tab会跑到左侧,这时的tab上的文字是反的.当设置为toright时,tab在右侧,这时的ta ...