JavaScript基础学习笔记(一)

JS用法

根据 http://www.runoob.com/ 进行整理

标签使用

<script>code</script>标识js的起始和结束,中间包含js代码;

外部JS

JS脚本一般集中放置在<head><body>底部,便于管理。外部JS使用.js作为扩展名,并在<script>标签的属性中设置JS文件。eg:<script src= "script.js"></script>

外部脚本不能包含<script>标签

JS输出

操作HTML元素

在HTML中的元素用"id"属性标明后,可在<script>中使用document.getElementById(id)方法来访问。eg:
<script> document.getElementById("demo").innerHTML = "段落已修改。"; </script>

写到HTML文档

可用<document.write()>将内容输出到文档中,如果在文档已加载完成后执行此代码,将覆盖原有HTML页面的内容。

写到控制台

可用<console.log()>将内容写到控制台,用于调试。

JS语法

JS字面量

字面量,常量,变量关系

var a;// a为变量
const int b = 10; // b 为常量,10为字面量
string str = "hello"; // str 为变量,hello为字面量

数字字面量(Number):整数,小数,科学计数。3.14,1001,123e5

字符串字面量(String):使用单引号或双引号:"Andrew",'Lars';

表达式字面量用于计算:5 + 6,1 * 2……;

数组(Array)字面量定义一个数组:[40,100,1]

对象(Object)字面量定义一个对象:{firstName:"Andrew",lastName:"Shen"};

函数(Function)字面量定义一个函数:function myFunction(a,b){return a * b}

注释

使用//进行单行注释
使用 /* code */ 进行多行注释

JS函数

JS语句可以卸载函数内,函数可以重复引用;引用一个函数=电泳函数

JS对大小写敏感

JS语句

语句标识符

语句 描述
break 用于跳出循环
catch 语句块,在 try 语句块执行出错时执行 catch 语句块。
continue 跳过循环中的一个迭代。
do-while 执行一个语句块,在条件语句为 true 时继续执行该语句块。
for 在条件语句为 true 时,可以将代码块执行指定的次数。
for-in 用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。
function 定义一个函数
if-else 用于基于不同的条件来执行不同的动作。
return 退出函数
switch 用于基于不同的条件来执行不同的动作。
throw 抛出(生成)错误 。
try 实现错误处理,与 catch 一同使用。
var 声明一个变量。
while 当条件语句为 true 时,执行语句块。

对代码进行折行

在文本字符串中可使用\对代码进行换行。

JS变量

变量是用于存储信息的容器

变量规则

  • 变量必须已字母开头。
  • 变量能以$和_开头。
  • 变量名称对大小写敏感。

变量的声明和创建

使用var来声明变量。声明时可以对其赋值。如果未声明直接创建则变量为全局变量:eg:name = Andrew,nama为全局变量.

JS数据类型

  • 字符串(String)
  • 数字(Number)
  • 布尔(Boolean)
  • 数组(Array)
  • 对象(Object)
  • 空(Null)
  • 未定义(undefined)

JS拥有动态类型!!

JS变量可用作不同的类型,厉害。

var x;               // x 为 undefined
var x = 5;           // 现在 x 为数字
var x = "John";      // 现在 x 为字符串

String

字符串可以是引号中的任意文本,可使用''或""

Number

JS只有一种数据类型,Number全搞定。

Boolean

布尔只有两个值,true 和 false

Array

array创建:

var array = new Array();
array[0] = "Andrew";
array[1] = "Lars";

var array = new Array("Andrew","Lars");

var array = ["Andrew","Lars"];

Object

JS对象是拥有属性和方法的数据。
对象有花括号分隔,内部以键值对(name:value)的形式定义,属性由逗号分隔。
var person = {firstName:"Andrew", lastName:"Shen"};

寻址方式:name = person.lastName; 或 name = person["lastName"]

方法创建:methodName : funciton() {code}

对象方法调用,通过添加()调用 objectName.methodName()'

Undefined 和 Null

Undefined表示变量不含有值。

通过将变量的值设为null来清空变量

声明变量类型,关键词"new"来声明

var carname=new String;
var x=      new Number;
var y=      new Boolean;
var cars=   new Array;
var person= new Object;

JS函数

函数的语法

function functionName(){
    code lines;
}

JS大小写敏感,function一定为小写。

带参函数

声明:

function myFunction(var1,var2)
{
代码
}

调用:myFunction(args1,args2)

带有返回值的函数

直接使用return即可以实现

function myFunction()
{
var x=5;
return x;
}

JS作用域

局部作用域

变量在函数内声明:局部变量。只能在函数内部访问。
局部变量在函数执行完毕后销毁。

全局变量

变量在函数外定义,或者在函数内没有声明,则为全局变量。在网页中所有脚本和函数均可使用。
全局变量在页面关闭后销毁。

HTML中的全局变量

HTML中,全局变量是window对象,所有数据变量都属于window对象。

JS事件

HTML事件

HTML元素可以添加事件属性,使用JS代码来添加HTML元素。
单引号:<some-HTML-element some-event='some JavaScript'>

双引号:<some-HTML-element some-event="some JavaScript">

eg:<button onclick='this.innerHTML=Date()'>The time is?</button>,this改变自身元素内容。

常见HTML事件

事件 描述
onchange HT元素改变
onclick 用户点击HTML元素
onmouseover 用户在一个HTML元素上移动鼠标
onmouseoout 用户从一个HTML元素上移开鼠标
onkeydown 用户按下键盘按键
onload 浏览器已完成页面的加载

JS字符串

用于存储和处理文本。不要创建String对象,会拖慢执行速度,可能产生其他副作用。

特殊字符转义

代码 输出
' 单引号
" 双引号
\ 反斜杠
\n 换行
\r 回车
\t tab(制表符)
\b 退格符
\f 换页符

字符串属性和方法

属性

属性 描述
constructor 返回创建字符串属性属性的函数
length 返回字符串的长度
prototype 允许您向对象添加属性和方法

方法

方法 描述
charAt() 返回指定索引位置的字符
charCodeAt() 返回指定索引位置字符的 Unicode 值
concat() 连接两个或多个字符串,返回连接后的字符串
fromCharCode() 将字符转换为 Unicode 值
indexOf() 返回字符串中检索指定字符第一次出现的位置
lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置
localeCompare() 用本地特定的顺序来比较两个字符串
match() 找到一个或多个正则表达式的匹配
replace() 替换与正则表达式匹配的子串
search() 检索与正则表达式相匹配的值
slice() 提取字符串的片断,并在新的字符串中返回被提取的部分
split() 把字符串分割为子字符串数组
substr() 从起始索引号提取字符串中指定数目的字符
substring() 提取字符串中两个指定的索引号之间的字符
toLocaleLowerCase() 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLocaleUpperCase() 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLowerCase() 把字符串转换为小写
toString() 返回字符串对象值
toUpperCase() 把字符串转换为大写
trim() 移除字符串首尾空白
valueOf() 返回某个字符串对象的原始值

JS运算符

JS运算符与一般编程语言相似。

+运算符

+运算符用于把文本值或字符串变量加起来\连接起来。

可对字符串和数字进行加法运算:z = "hello" + 5,z = hello5

比较运算符,条件语句,循环语句

与一般编程语言相似。

typeof操作符

检测变量的数据类型。

用typeof检测null返回的是objet。null是一个只有一个值的特殊类型。标识一个空对象引用

typeof一个没有值的变量会返回undefined,undefined是一个没有设置值的变量

JS类型转换

Number()转换为数字,String()转换为字符串,Boolean()转换为布尔值。

5种数据类型:String,Number,Boolean, Object, Function.

3种对象类型:Object,Date,Array

2种不包含任何值的数据类型:Null,Undefined

自动转换类型

当JS尝试操作一个『错误』的数据类型时,会自动转换为『正确』的数据类型。

当你尝试输出一个对象或变量时,JS会自动调用变量的toString()方法。

JS正则表达式(regex\regexp\RE)

正则表达式是由一个字符序列形成的搜索模式。

当你在文本中搜索数据是,你可以用搜索模式来描述你要查询的内容。

正则表达式可以是一个简单的字符,或一个更复杂的模式。

正则表达式可用于所有文本搜索和文本替换的操作。

语法

/pattern/modifiers;

eg:var patt = /w3cschool/i

使用字符串方法

JS中,正则表达式常用于字符串方法:search(),replace().

eg:

var str = "Visit w3cschool";
var n = str.search(/w3cschool/i);
var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "w3cschool"); // 不区分大小写

正则表达式修饰符

修饰符 可以在全局搜索中不区分大小写:

修饰符 描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。

正则表达式模式

方括号用于查找某个范围内的字符:

表达式 描述
[abc] 查找方括号之间的任何字符。
[0-9] 查找任何从 0 至 9 的数字。
(x y) 查找任何以 分隔的选项。

元字符是拥有特殊含义的字符:

元字符 描述
\d 查找数字。
\s 查找空白字符。
\b 匹配单词边界。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

量词:

量词 描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。

test()

test()是一个正则表达式。

test()方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回true,否则返回false.

exec()

exec()方法是一个正则表达式。

exec() 方法用于检索字符串中的正则表达式的匹配。

该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

JS表单验证

必填项目

    <!DOCTYPE html>
    <html>
    <head>
    <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" onsubmit="return validateForm()" method="post">
    姓: <input type="text" name="fname">
    <input type="submit" value="提交">
    </form>
    </body>
    </html>

Email验证

    <!DOCTYPE html>
    <html>
    <head>
    <script>
    function validateForm()
    {
    var x=document.forms["myForm"]["email"].value;
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
      {
      alert("Not a valid e-mail address");
      return false;
      }
    }
    </script>
    </head>
    <body>
    <form name="myForm" action="demo-form.php" onsubmit="return validateForm();" method="post">
    Email: <input type="text" name="email">
    <input type="submit" value="Submit">
    </form>
    </body>
    </html>

void

void(0)

void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。

void(0) 计算为 0,但 Javascript 上没有任何效果。

href="#"与href="javascript:void(0)"的区别

#包含了一个位置信息,默认的锚是#top 也就是网页的上端。

而javascript:void(0), 仅仅表示一个死链接。

在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id。

如果你要定义一个死链接请使用 javascript:void(0) 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容