JavaScript基础学习(一)

一、JavaScript概述

JavaScript的历史

  • 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言)
  • Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript
  • 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript.
  • 为了统一三家,ECMA(欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。EcmaScript是规范.

ECMAScript

一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:

  • 核心(ECMAScript)
  • 文档对象模型(DOM) Document object model (整合js,css,html)
  • 浏览器对象模型(BOM) Broswer object model(整合js和浏览器)
  • Javascript 在开发中绝大多数情况是基于对象的.也是面向对象的.

JavaScript的引入方式

{#1 直接编写#}
<script>
alert('hello yuan')
</script>
{#2 导入文件#}
<script src="hello.js"></script> 

二 JavaScript的基础

2.1 变量

1 声明变量时不用声明变量类型. 全都使用var关键字;

2 一行可以声明多个变量.并且可以是不同类型.

3 (了解) 声明变量时 可以不用var. 如果不用var 那么它是全局变量.

4 变量命名,首字符只能是字母,下划线,$美元符 三选一,且区分大小写,x与X是两个变量

5 变量还应遵守规则:

匈牙利类型标记法
在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。
例如,i 表示整数,s 表示字符串,如下所示“
Var iMyTestValue = 0, sMySecondValue = "hi";

2.2 基础规范

1 每行结束可以不加分号. 没有分号会以换行符作为每行的结束

2 注释 支持多行注释和单行注释. /* */  //

使用{}来封装代码块

2.3 常量和标识符

标识符

2.4 数据类型

数字类型(Number)

整数:
           在JavaScript中10进制的整数由数字的序列组成
           精确表达的范围是
-9007199254740992 (-253) 到 9007199254740992 (253)
           超出范围的整数,精确度将受影响
浮点数:
           使用小数点记录数据
           使用指数记录数据

16进制和8进制数的表达
           16进制数据前面加上0x,八进制前面加0
           16进制数是由0-9,A-F等16个字符组成
           8进制数由0-7等8个数字组成
           16进制和8进制与2进制的换算

字符串(String)

是由Unicode字符、数字、标点符号组成的序列

布尔型(Boolean)

Boolean类型仅有两个值:true和false

Null & Undefined

Undefined 类型

Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。

当函数无明确返回值时,返回的也是值 "undefined";

Null 类型

另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。

var person=new Person()

var person=null

数据类型转换

数字 + 字符串:数字转换为字符串

数字 + 布尔值:true转换为1,false转换为0

字符串 + 布尔值:布尔值转换为字符串true或false

强制类型转换函数

函数parseInt:   强制转换成整数   例如parseInt("6.12")=6  ; parseInt(“12a")=12 ; parseInt(“a12")=NaN  ;parseInt(“1a2")=1

函数parseFloat: 强制转换成浮点数  parseFloat("6.12")=6.12

函数eval:       将字符串强制转换为表达式并返回结果 eval("1+1")=2 ; eval("1<2")=true

类型查询函数(typeof)

例如typeof("test"+3)      "string"
例如typeof(null) "object "
例如typeof(true+1) "number"
例如typeof(true-false) "number"

ECMAScript 运算符

ECMAScript 算数运算符

加(+)、 减(-)、 乘(*) 、除(/) 、余数(% ) 加、减、乘、除、余数和数学中的运算方法一样

i++相当于i=i+1,i--相当于i=i-1

一元加减法:

NaN:属于Number类型的一个特殊值,当遇到将字符串转成数字无效时,就会得到一个NaN数据

    var a=1;
a=-a; //a=-1 var c="10";
c=+c;
alert(typeof (c)); //Number var d="yuan";
d=+d;
alert(typeof(d)); //Number //NaN特点: var n=NaN; alert(n>3);
alert(n<3);
alert(n==3);
alert(n==NaN); alert(n!=NaN);//NaN参与的所有的运算都是false,除了!=

ECMAScript 逻辑运算符

等于 ( == )  、不等于( != ) 、 大于( > ) 、 小于( < ) 
大于等于(>=) 、小于等于(<=)
与 (&&) 、或(||) 、非(!)

如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:

  • 如果某个运算数是 null,返回 null。
  • 如果某个运算数是 NaN,返回 NaN。
  • 如果某个运算数是 undefined,返回undefined。
JavaScript中=代表赋值,两个等号==表示判断是否相等
2 == “2”       //true     做转化处理
2 === “2” //false 不做转化处理

ECMAScript等性运算符

  • 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
  • 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
  • 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
  • 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。

ECMAScript 关系运算符(重要)

比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.

比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较.
var bResult = "Blue" < "alpha";
alert(bResult); //输出 true  var bResult = "25" < "3";
alert(bResult); //输出 "true" var bResult = "25" < 3;
alert(bResult); //输出 "false"

Boolean运算符(重要)

var temp=new Object();// false;[];0; null; undefined;object(new Object();)

    if(temp){
console.log("yuan")
}else {
console.log("alex")
}

控制语句

if 控制语句

if-else基本格式
if (表达式){
语句1;
......
}else{
语句2;
.....
}

switch  选择控制语句

switch基本格式
switch (表达式) {
case 值1:语句1;break;
case 值2:语句2;break;
case 值3:语句3;break;
default:语句4;
在多路分支时用switch比if..else if .. else结构要效率高。

for  循环控制语句

for循环基本格式
for (初始化;条件;增量){
语句1;
...
}

while  循环控制语句

while循环基本格式
while (条件){
语句1;
...
}
var i=1;
while (i<=7) {
document.write("<H"+i+">hello</H "+i+"> ");
document.write("<br>");
i++;
}
//循环输出H1到H7的字体大小

异常处理

try {
//这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
}
catch (e) {
// 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
//e是一个局部变量,用来指向Error对象或者其他抛出的对象
}
finally {
//无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
}

ECMA对象

var o = new Object();

object对象:ECMAScript 中的所有对象都由这个对象继承而来;Object 对象中的所有属性和方法都会出现在其他对象中

ToString() :  返回对象的原始字符串表示。
ValueOf() : 返回最适合该对象的原始值。对于许多对象,该方法返回的值都与ToString() 的返回值相同

11种内置对象

包括:

Array ,String , Date, Math, Boolean, Number  Function, Global, Error, RegExp , Object

Function 对象(重点)

function 函数名 (参数){
函数体;
return 返回值;
}
function func1(){
alert('hello yuan!');
return 8
} var func1=new Function("name","alert(\"hello\"+name);") // 匿名函数
var func = function(arg){
return "tony";
} // 匿名函数的应用
(function(arg){
console.log(arg);
})('123')

运算符void()作用:拦截方法的返回值

alert(void(fun1(1,2)))

ECMAScript 定义的属性 length 声明了函数期望的参数个数。

alert(func1.length)

函数的调用

function func1(a,b){

    alert(a+b);
} func1(1,2); //3
func1(1,2,3);//3
func1(1); //NaN
func1(); //NaN //只要函数名写对即可,参数怎么填都不报错. -------------------面试题-----------
function a(a,b){
alert(a+b);
} var a=1;
var b=2;
a(a,b)

函数的内置对象arguments

function add(a,b){

        console.log(a+b);//3
console.log(arguments.length);//2
console.log(arguments);//[1,2] }
add(1,2) ------------------arguments的用处1 ------------------
function nxAdd(){
var result=0;
for (var num in arguments){
result+=arguments[num]
}
alert(result) } nxAdd(1,2,3,4,5) // ------------------arguments的用处2 ------------------ function f(a,b,c){
if (arguments.length!=3){
throw new Error("function f called with "+arguments.length+" arguments,but it just need 3 arguments")
}
else {
alert("success!")
}
} f(1,2,3,4,5)

最新文章

  1. 23种设计模式--代理模式-Proxy
  2. PLSQLDeveloper 提示不能初始化?
  3. Myeclipse2016 部署webapp 至 tomcat 上出现 “There are no resources that can be added or removed from the server”
  4. kindeditor html代码过滤不能保存
  5. 高级Swing——列表
  6. leetcode Binary Tree Inorder Traversal python
  7. html字符实体对照表
  8. HDU4704Sum 费马小定理+大数取模
  9. WPF控制动画开始、停止、暂停和恢复
  10. Bootstrap 禁用滚动条
  11. maven重新导入,不能拉到最新jar包的问题
  12. spring security oauth2
  13. Scrapy爬虫框架的学习
  14. 如何查看安装python和numpy的版本
  15. 【读书笔记】iOS-软件测试与iOS测试
  16. 模拟赛T1 素数
  17. Ubuntu菜鸟入门(十六)—— 安装视频播放器vlc
  18. ROS学习(四)—— 创建ROS Package
  19. 树莓派做下载机+Web服务器(Aria2下载+yaaw做UI+nginx)
  20. linux安装git,linux安装jenkins

热门文章

  1. 杭电oj 进制转换
  2. maven导入本地依赖
  3. allure+junit5遇到的一些问题
  4. dropbear 2019.78 Installing to target......Running build_buildroot failed!
  5. 2023 2 4 c++NOIP机试 小豫豫在郑州 type
  6. vue3项目在页面退出时弹窗确认--用vant组件Dialog弹窗在路由改变的时候不生效问题
  7. 【Linux】有名管道实现进程间通信——一个简单聊天程序
  8. 实验5:开源控制器实践POX
  9. 9.java单链表初学代码复现及一些不值一提的小问题(2)
  10. windows10本地联调zk环境报异常SASL config status: Will not attempt to authenticate using SASL (unknown error)