JavaScript教程学习笔记

JavaScript教程学习笔记

JavaScript教程-菜鸟教程

JS简介

  • 轻量级编程语言
  • 脚本语言
  • 浏览器会在读取代码时,逐行地执行脚本代码;而对于传统编程来说,会在执行前对所有代码进行编译
  • 可插入HTML页面,插入后可由所有的现代浏览器执行
  • 对大小写敏感
  • 使用 Unicode 字符集
插入方式

HTML 中的脚本必须位于<script>与 </script> 标签之间

  • <body>中的JS
  • <head>中的JS
  • 外部JS(.js文件),利用script标签的src属性设置
    外部脚本不能包含script标签
基本语法
字面量

一般固定值称为字面量

  • 数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e)
  • 字符串(String)字面量 可以使用单引号或双引号
  • 表达式字面量 用于计算
  • 数组(Array)字面量 定义一个数组
  • 对象(Object)字面量 定义一个对象
  • 函数(Function)字面量 定义一个函数
  • 布尔(Bool)字面量 true false
5 + 6

[40, 100, 1, 5, 25, 10]

{firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}

function myFunction(a, b) { return a * b;}
变量&数据类型

变量

  • 使用关键字 var来定义变量, 使用等号来为变量赋值
  • 变量名必须字母/$/_开头

数据类型

  • 值类型:数字/字符串/布尔/对空()/未定义/Symbol
  • 引用数据类型:对象/数组/函数
  • 未定值变量 Value = undefined(undefined为一个数据类型)
  • 清空变量 Value=null(空对象的引用,为Object类型)
  • 重新声明 JavaScript 变量,该变量的值不会丢失
  • 动态类型
  • .constructor属性:返回所有 JavaScript 变量的构造函数
  • 类型转换:自动(+)/强制(String()/.toString()/Date()/Number())
var x, length;
x = 5;
length = 6;

var lastname="Doe", age=30, job="carpenter";

var lastname="Doe",
age=30,
job="carpenter";

var x,y,z=1;

*在 JavaScript 中, null 用于对象, undefined 用于变量,属性和方法。

对象只有被定义才有可能为 null,否则为 undefined*

操作符
  • 算术运算符  + - * / % ++ –
  • 赋值运算符  = += -= *= /= %=
  • 条件运算符  == != <= >= =(绝对相等,即数据类型与值都必须相等)!
  • 逻辑运算符  && || !
  • 条件运算符  variablename=(condition)?value1:value2
语句&关键字&注释
  • 语句用分号分隔(可选)
  • 代码块: {}
  • 单行注释: //
  • 多行注释: /* */
  • 折行: \(在文本字符串中使用)
  • 常用关键字: new typeof NaN Indinity
函数

由事件驱动的或者当它被调用时执行的可重复使用的代码块

  • 局部变量/全局变量(在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它)
  • 如果您把值赋给尚未声明的变量,该变量将被自动作为 window 的一个属性
  • 非严格模式下给未声明变量赋值创建的全局变量,是全局对象(window)的可配置属性,可以删除(del varl)
//函数定义-语法
function functionname({var1,var2})
{
    // 执行代码
    return {result};   //可选
}

//函数定义
function myFunction(a, b) {
   	return a * b;                                // 返回 a 乘以 b 的结果
}
//函数调用
myFunction(a, b);
字符串&字符串对象
  • 字符串属性及方法
  • 字符串可用+操作符连接
  • 字符+数字,返回字符串
  • var x = “John”;   //字符串
  • var y = new String(“John”);   //字符串对象,与x非绝对相等
JavaScript对象
  • 拥有属性和方法的数据类型
  • 由花括号分隔
  • 在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义,由逗号分隔
  • 属性:键值对;方法:函数
  • this:当前对象的一个引用/全局对象window
//JS对象定义
var person={firstname:"John", lastname:"Doe", id:5566};
//访问对象属性
name=person.lastname;
name=person["lastname"];

//创建对象方法
methodName : function() { code lines }
//访问对象方法
objectName.methodName()

var person = {
    firstName: "John",
    lastName : "Doe",
    id : 5566,
    fullName : function()
	{
       return this.firstName + " " + this.lastName;
    }
};

条件&分支

//if else条件句
if (time<20)
{
    x="Good day";
}

//switch分支
var d=new Date().getDay();
switch (d)
{
  case 0:x="今天是星期日";
  break;
  case 1:x="今天是星期一";
  break;
  case 2:x="今天是星期二";
  break;
  case 3:x="今天是星期三";
  break;
  case 4:x="今天是星期四";
  break;
  case 5:x="今天是星期五";
  break;
  default:x="今天是星期六";
  break;
}

循环

  • for - 循环代码块一定的次数
  • for/in - 循环遍历对象的属性
  • while - 当指定的条件为 true 时循环指定的代码块
  • do/while - 同样当指定的条件为 true 时循环指定的代码块
for (var i=0;i<cars.length;i++)
{
    document.write(cars[i] + "<br>");
}

//for/in循环
for (x in person)  // x 为属性名
{
    txt=txt + person[x];
}

//do while循环
do
{
    x=x + "The number is " + i + "<br>";
    i++;
}
while (i<5);

正则表达式

语法
结构
/正则表达式主体/修饰符(可选)

var patt = /runoob/i;
str.search(/Runoob/i);
构造

修饰符

  • i 执行对大小写不敏感的匹配
  • g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
  • m 执行多行匹配
    表达式主体模式
表达式描述
[abc]查找方括号之间的任何字符
[0-9]查找任何从 0 至 9 的数字
(x|y)查找任何以 | 分隔的选项
元字符描述
\d查找数字
\s查找空白字符
\b匹配单词边界
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符
量词描述
n+匹配任何包含至少一个 n 的字符串
n*匹配任何包含零个或多个 n 的字符串
n?匹配任何包含零个或一个 n 的字符串
方法
  • search():检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置
  • replace():在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
  • RegExp.test():检测一个字符串是否匹配某个模式(含有true,否则false)
  • RegExp.exec():返回一个数组,其中存放匹配的结果,如果未找到匹配,则返回值为 null
var str = "Visit Runoob!";
var n = str.search(/Runoob/i);
var n = str.search("Runoob");

var patt = /e/;
patt.test("The best things in life are free!");

/e/.test("The best things in life are free!");
/e/.exec("The best things in life are free!");

输出

JS没有打印/输出函数,但可使用不同方式达到输出目的

  • window.alert()  弹出警告
  • document.write()  将内容写到 HTML 文档中
  • innerHTML  写入到 HTML 元素
  • console.log()  写入到浏览器的控制台
<script>
document.getElementById("demo").innerHTML = "段落已修改。";
</script>

/*相当于加了一行显示日期*/
/*如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖*/
<script>
document.write(Date());
</script>

HTML事件

发生在 HTML 元素上的事情,可以是浏览器行为,也可以是用户行为,如:

  • HTML 页面完成加载  load
  • HTML input 字段改变时
  • HTML 按钮被点击  onclick
  • onkeydown
触发

HTML 元素中可以添加事件属性,使用 JavaScript 代码来添加 HTML 元素

<some-HTML-element some-event='JavaScript 代码'>

//按钮示例
  //调用函数
<button "getElementById('demo').innerHTML=Date()">现在的时间是?</button>
  //简单指令
<button "displayDate()">现在的时间是?</button>

错误处理

  • try 语句测试代码块的错误
  • catch 语句处理错误
  • throw 语句创建自定义错误
  • finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行
var txt="";
function message()
{
    try {
        adddlert("Welcome guest!");
        if(txt=="") throw "值为空";
    } catch(err) {
        txt="本页有一个错误。\n\n";
        txt+="错误描述:" + err.message + "\n\n";
        txt+="点击确定继续。\n\n";
        alert(txt);
    }
    finally {
    document.getElementById("demo").value = "";
    }
}

变量提升&严格模式

  • JavaScript 中,函数及变量的声明都将被提升到函数的最顶部,
  • 变量可以在使用后声明,也就是变量可以先使用再声明
  • 初始化不会提升
  • JavaScript 严格模式(strict mode)不允许使用未声明的变量
  • 严格模式通过在脚本或函数的头部添加 “use strict”; 表达式来声明

示例-表单验证

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
function validateForm() {
    var x = document.forms["myForm"]["fname"].value;
    if (x == null || x == "") {
        alert("需要输入名字。");
        return false;
    }
}
</script>
</head>
<body>

<form name="myForm" action="demo_form.php"
"return validateForm()" method="post">
名字: <input type="text" name="fname">
<input type="submit" value="提交">
</form>

</body>
</html>

//自动验证(required [HTML输入属性](http://www.runoob.com/html/html5-form-attributes.html))
<form action="demo_form.php" method="post">
  <input type="text" name="fname" required="required">
  <input type="submit" value="提交">
</form>

this & let & const & void

this
  • 在方法中,this 表示该方法所属的对象
  • 如果单独使用,this 表示全局对象
  • 在函数中,this 表示全局对象
  • 在函数中,在严格模式下,this 是未定义的(undefined)
  • 在HTML事件中,this 表示接收事件的元素,见例
  • 类似 call() 和 apply() 方法可以将 this 引用到任何对象
<button "this.style.display='none'">
点我后我就消失了
</button>
let & const
  • let 声明的变量只在 let 命令所在的代码块内有效
  • const 声明一个只读的常量,一旦声明,常量的值就不能改变
void
<a href="javascript:void(0);">点我没有反应的!</a>
<a href="#pos">点我定位到指定位置!</a>
<br>
...
<br>
<p id="pos">尾部定位点</p>
参考手册

JavaScript 内置对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值