基础语法复习——JavaScript

0x01 什么是JavaScript

JavaScript是Web的轻量级编程语言,它描述网页的行为,与HTML和CSS一起工作。
使用<script>标签在HTML中可插入JavaScript。

可以放在哪里?

JavaScript代码可以放在<head>或者<body>中,也可以都有,且个数不限。
当然,也可以把JS脚本保存在外部文件中,从而被多个网页使用。
在调用外部JS脚本时,在<script>标签中使用src属性设置要使用的js文件。

0x02 JavaScript 输出

JavaScript本身没有打印、输出的函数,但是可以通过以下方式来输出数据。

方式 作用
window.alert() 弹框
document.write() 将内容写入HTML文档
innerHTML 写入HTML元素
console.log 写入浏览器控制台

弹框
弹框

写入内容至HTML文档
写入内容至HTML文档

写入HTML元素
写入HTML元素

写入浏览器控制台
写入浏览器控制台

0x03 JavaScript 语法

使用var定义变量,字符串可使用单引号或双引号,操作符、保留字、注释与C语言等类似。
JavaScript语句和变量都对大小写敏感。
在每条可执行语句结尾都需要加上英文的分号。
JavaScript 会忽略多余的空格。

变量声明

变量声明完之后未赋值前,不带初始值,即为undefined。
一条语句,多个变量的声明,与C语言类似,不在此赘述。
重新生命JavaScript变量时,该变量的值不会丢失,即:

var name="xiaoming";
var name;

这两条语句顺序执行之后,name变量的值依旧为xiaoming。

数据类型

JavaScript拥有动态类型,相同的变量可以用作不同的类型,即:

var x;                                                     //x为undefined
var x = 3.14;                                           //x为数字
var x = "fine";                                         //x为字符串
var x = 'nice';                                         //x为字符串
var x = true;                                          //x为布尔类型
var x = new Array("Cat","Dog","Rabbit");     //x为数组类型
……

对象(Object):
对象中不同属性之间用逗号分隔。

var name={
    firstname : "Amy",
    lastname : "Joe",
}

在使用时,寻址方式可以使用以下两种方式:

person = name.firstname;  //点可以理解为“的”,即名字里面的名
person = name["firstname"];

可以使用new来生命变量类型,例如:var name = new String;

注意:undefined和null是不一样的,null表示变量的值为空,可以用来清空变量的值;undefined表示变量不含值。

函数

函数声明类似C语言,开头用function。
JavaScript函数可以通过一个表达式来定义,可以存储在变量中,函数表达式存储在变量中之后,该变量也可以作为函数来使用。例:

var x = function(m, n){return m+n};
var z = x(6, 7);

关于JavaScript的类型转换、循环语句、比较等与C语言类似,不再赘述。

正则表达式

语法:

/正则表达式主体/修饰符(可选)
正则表达式主体是需要检索的内容。
在JavaScript中正则表达式一般使用search()和replace()两种方法,前者为检索需要的内容,并显示位置;后者为检索并替换相应的内容。

修饰符 含义
i 不区分大小写的匹配
g 全局匹配,即查找所有匹配项,而非找到第一个之后就停止
m 多行匹配
量词 含义
n+ 匹配至少包含一个n的字符串
n* 匹配包含0个或者多个n的字符串
n? 匹配包含0个或一个n的字符串

JavaScript de RegExp对象在遇到不清楚的时,查询完整的RegExp参考手册即可。

正则表达式

0x04 JavaScript 验证

表单验证

HTML表单验证可以通过HTML自动验证也可以使用JavaScript来验证,HTML表单自动验证比较简单,就不写了。
使用JavaScript来进行表单验证时,也是在方法中定义自己的需求。例如:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JavaScript表单验证</title>
</head>

<body>
    <h1>请按要求输入相应内容</h1>
    <br>
    <p>姓名:</p><input id="name" type="text">
    <p>学号:</p><input id= "sNo" type="text">
    <br>
    <button type="button" onclick="function1()">Submit</button>
    <p id="demo"></p>

    <script>
        function function1() {
            var x = document.getElementById("name").value;
            var regName = /^[\u4E00-\u9FA5]+$/;  //正则匹配判断是否为中文字符

            var y = document.getElementById("sNo").value;
            var regNum = /^\d{8}$/;  //正则匹配判断是否为八位正整数

            if(!regName.test(x)) {
                text = "姓名输入有误,请重新输入";
            }else if (!regNum.test(y)) {
                text = "学号输入有误,请重新输入";
            }else {
                text = "提交成功";
            }
            document.getElementById("demo").innerHTML = text;
        }

    </script>
</body>
</html>
表单验证

验证API

JS的API中有表单验证的功能,其中方法checkValidity()可以验证input元素中的输入是否合法,返回的是true或flase。setCustomValidity()方法可以自定义错误提示信息。
具体函数,可在使用时按需查询。

一开始把验证API看成了API验证,怎么都搞不拎清啥意思。我大概是个魔鬼吧hhh

0x05 JavaScript JSON

JavaScript Object Notation(数据交换格式),是独立的语言。

语法规则

  1. 数据为键/值对;
  2. 数据之间用逗号分隔;
  3. 大括号{}保存对象;
  4. 方括号[]保存数组;
  5. 一个名称对应一个值;
  6. 名称和值都各自用双引号引起来;
  7. 数组可以包含对象;
  8. 一个对象可以保存多个键/值对
example:
"demo":[
    {"name":"Cat","Color":"Orange"},
    {"name":"Dog","Color":"Black"},
    {"name":"Rabbit","Color":"White"}
]

JSON字符串和JS对象相互转换

函数 描述
JSON.parse() JSON字符串转JS对象
JSON.stringify() JS对象转JSON字符串
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JSON字符串转JS对象</title>
</head>
<body>
    <p id="miao"></p>

    <script>
        var text = '{"demo":['+
        '{"name":"Cat","Color":"Orange"},'+
        '{"name":"Dog","Color":"Black"},'+
        '{"name":"Rabbit","Color":"White"}]}';

        fine = JSON.parse(text);
        document.getElementById('miao').innerHTML = fine.demo[0].name+"'s color is "+fine.demo[0].Color;
    </script>
</body>
</html>
JSON字符串转JS对象

JS对象转JSON字符串的操作类似。

写完这一部分,我只想说:代码不规范,调试好几行泪QAQ

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