前言

新人学习成本很高,网络上太多的名词和框架,全部学习会浪费大量的时间和精力。

新手缺乏学习内容的辨别能力,本系列文章为新手过滤掉不适合的学习内容(比如多线程等等),让新手少走弯路直通罗马。

作者认为新人应该先打好基础,不要直接学习框架,例如先掌握 SQL 再使用 EFCore 框架。

作者只传授数年内不会变化的知识,让新手学习快速进入跑道受益终身。

分享使我快乐,请务必转发给同学,朋友,让大家都少走一些弯路!!


W3C 是一群大佬制定的 WEB 标准规范,包括 HTML/CSS/JavaScript、HTTP协议等等。所有厂商遵循行业标准,比如前端的浏览器(Chrome/IE/Firefox),后端的WEB服务器(Nginx/Apache/IIS)。(思考:如果 IE浏览器 只能访问 IIS 服务器?)

我们基于 WEB 之上的码农,只需要学习好这些标准知识,就可以在任何编程语言下通用,这些知识未来几十年都不过时。

W3C 虽然标准,但也不是每项技术都值得新人学习(例如 XHTML/XSL),对于新手而言,只推荐学习 HTML/CSS/JavaScript、HTTP协议


什么是 JavaScript

JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。

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

<script>
alert("我的第一个 JavaScript");
</script>

Chrome 浏览器中可以通过按下 F12 按钮打开开发者工具。我们可以在 Console 窗口调试 JavaScript代码,如下图:


JavaScript 显示数据

  • 使用 alert() 弹出警告框。
  • 使用 innerHTML 写入到 HTML 元素。
  • 使用 console.log() 写入到浏览器的控制台。
<script>
alert(5 + 6);
</script>
<p id="demo">我的第一个段落</p>

<script>
document.getElementById("demo").innerHTML = "段落已修改。";
</script>
<script>
a = 5;
b = 6;
c = a + b;
console.log(c);
</script>

JavaScript 语法

  • 值类型:

    • 数字:3.14、1001
    • 字符串:'string1'、"string2"
    • 布尔:true, false
    • 空:null
    • 未定义:undefined
  • 引用类型:
    • 数组:[40, 100, 1]
    • 对象:
    • 函数:function myFunction(a, b)
    • 日期:Date
    • 正则:RegExp
  • 变量:var x = 5
  • 算术运算符:= + - * / % ++ --
  • 赋值运算符:= += -= *= /= %=
  • 比较运算符:== != < > <= >=
  • 逻辑运算符:&& || !
  • 三元表达式:true ? 1 : 0

javascript 语句用分号分隔,对大小写是敏感,浏览器按照编写顺序依次执行每条语句。

var x = 5 + 6;
var y = x * 10;
// 这里是注释

JavaScript 可以分批地组合起来。代码块以左花括号开始,以右花括号结束。

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:

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

变量的数据类型可以使用 typeof 操作符来查看:

typeof "John"                // 返回 string
typeof 3.14 // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof {name:'John', age:34} // 返回 object

JavaScript 对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义:

var person = {firstname:"John", lastname:"Doe", id:5566, method1: function() { return "..."; }};
var name1 = person.firstname; //访问方式1
var name2 = person["lastname"]; //访问方式2
var callMethod1 = person.method1(); //访问对象的方法

JavaScript 条件语句:

if (time < 20)
{
当条件为 true 时执行的代码
} if (time < 20)
{
当条件为 true 时执行的代码
}
else
{
当条件不为 true 时执行的代码
} if (time < 20)
{
当条件 1 为 true 时执行的代码
}
else if (time < 50)
{
当条件 2 为 true 时执行的代码
}
else
{
当条件 1 和 条件 2 都不为 true 时执行的代码
} var x = "";
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;
case 6:x="今天是星期六"; break;
default: x="未知"; break;
}
alert(x);

JavaScript 循环语句:

var cars= ['小车1', '小车2', '小车3'];
for (var i=0;i<cars.length;i++)
{
console.log(cars[i]);
}
//小车1
//小车2
//小车3 var objs = {id: 100, name: 'name1', lastname: 'name2'};
foreach (var key in objs)
{
console.log(key + '=' + objs[key]);
}
//id=100
//name=name1
//lastname=name2 var a = 0;
while (a < cars.length)
{
console.log(cars[i]);
a++;
}
//小车1
//小车2
//小车3

JavaScript 函数是包裹在花括号中的代码块,前面使用了关键词 function:

function myFunction(arg1, arg2)
{
return arg1 + arg2;
}
alert(myFunction(1, 2)); var func = myFunction;
alert(func(1, 2)); //闭包
var a = 0; //全局变量
(function() {
var a = 0; //局部变量,和上面的 a 不是一个引用
})();

JavaScript HTML 事件:

<input type="button" onclick="alert(111)">
事件 说明
onchange HTML 元素改变
onclick 用户点击 HTML 元素
onmouseover 鼠标指针移动到指定的元素上时发生
onmouseout 用户从一个 HTML 元素上移开鼠标时发生
onkeydown 用户按下键盘按键

JavaScript 字符串方法:

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

转换为字符串类型:String(123)

转换为数字类型:Number('123') 或者 parseFloat('123') 或者 parseInt('123') 或者 +'123'


JavaScript 表单验证

<script>
function validateForm() {
var x = document.forms["myForm"].fname.value;
if (x == null || x == "") {
alert("需要输入名字。");
return false;
}
}
</script> <form name="myForm" action="demo_form.php" onsubmit="return validateForm()" method="post">
名字: <input type="text" name="fname">
<input type="submit" value="提交">
</form>

JavaScript 对象可以随意设置属性,或者方法,包括 HTML dom 对象:

var form = document.forms['myForm'];
form.a1 = 0;
form.a2 = function() {
alert(form.a1++);
};
form.a2(); // 或者 form['a2'](); form.onsubmit = function() {
var x = form.fname;
if (x == null || x == "") {
alert("需要输入名字。");
return false;
}
};

JavaScript JSON

JSON 是用于存储和传输数据的格式,通常用于服务端向网页传递数据。

var json = {
"sites":[
{"name":"Runoob", "url":"www.runoob.com"},
{"name":"Google", "url":"www.google.com"},
{"name":"Taobao", "url":"www.taobao.com"}
]
}; console.log(json.sites[1].name); //Google
方法 说明
JSON.parse(string) 用于将一个 JSON 字符串转换为 JavaScript 对象。
JSON.stringify(object) 用于将 JavaScript 对象转换为 JSON 字符串。

JQuery

<head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">
</head>

用户点击按钮后,所有 <p> 元素都隐藏:

<h2>这是一个标题</h2>
<p>这是一个段落。</p>
<p>这是另一个段落。</p>
<input type="inputName" value="name01'>
<button id="button1" class="button_class1">点我</button> <script>
$("button").click(function(){
$("p").hide();
});
</script>

$('#button1') 根据 id 属性选择,对应 document.getElementById('button1')

$('.button_class1') 根据 class 属性选择


AJAX

$.get('/WeatherForecast/Select_table02', function (data, status) {
alert("数据: " + data + "\n状态: " + status);
}); $("button1").click(function(){
$.post("/WeatherForecast/Insert_table02",
{
name:$('#inputName').val()
},
function(data, status){
alert("数据: " + data + "\n状态: " + status);
});
});

JavaScript 调试

浏览器启用调试工具一般是按下 F12 键,并在调试菜单中选择 "Console" 。

如果浏览器支持调试,你可以使用 console.log() 方法在调试窗口上打印 JavaScript 值:

a = 5;
b = 6;
c = a + b;
console.log(c);

debugger 关键字用于停止执行 JavaScript,并调用调试:

<div id="demo"></div>

<script>
var x = 15 * 5;
debugger;
document.getElementbyId("demo").innerHTML = x;
</script>
参考:https://www.runoob.com

HTML 内容体系还有很多,但是对新手而已学到这里算入门了,千万不要指望一下能吃下所有内容(贪吃蛇的后果),只有反复的实战才能彻底领会贯通。

到这里,你已经对 JavaScript 有了初步的认识,为我们以后深入打下了基础,下一篇我们学习 HTTP 协议知识!


系列文章导航

原创保护,转载请注明出处:https://www.cnblogs.com/FreeSql/p/16782488.html

Asp.net core 少走弯路系列教程(四)JavaScript 学习的更多相关文章

  1. 学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  2. 学习ASP.NET Core Blazor编程系列十四——修改

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  3. ASP.NET Core :缓存系列(四):内存缓存 MemoryCache

    System.Runtime.Caching/MemoryCache ICacheEntry 接口中的属性:具体设置过期时间 可以参考:微软文档ICacheEntry 接口 缓存基本使用 (一) 绝对 ...

  4. 学习ASP.NET Core Blazor编程系列十六——排序

    学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应 ...

  5. 学习ASP.NET Core Razor 编程系列九——增加查询功能

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  6. 学习ASP.NET Core Razor 编程系列十九——分页

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. 学习ASP.NET Core Razor 编程系列十七——分组

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  8. 学习ASP.NET Core Razor 编程系列十六——排序

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  9. 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  10. 学习ASP.NET Core Blazor编程系列十五——查询

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

随机推荐

  1. 快速入门 DeepSeek-R1 大模型

    国内最新的神级人工智能模型已经正式发布,没错,它就是备受瞩目的DeepSeek-R1大模型.今天,我们将对DeepSeek进行一个简单的了解,并探索如何快速使用和部署这个强大的工具.值得一提的是,De ...

  2. 银杏叶也是yxy

    今年下半年(9月后)第一个使我震撼而狂喜的书籍,金阁寺. 翻译是林少华.他翻译这个可比村上春树好多了 一切都像梦寐一般,一切都如此完美 完美的结构,完美的心理叙述,撕心裂肺的景色描写 战后无限的虚无与 ...

  3. datawhale-leetcode打卡:001-012题

    这次这十二个题目属于是极限肝出来的,有两个参考了一下题解,还是很有意思.我会按照我个人的感觉去写这个东西. 螺旋矩阵(leetcode 054) 这个题目比较恶心的就是跑圈的过程怎么描述.首先,顺时针 ...

  4. SpringBoot 自动代码生成三层

      前言 虽然mybatis已经有了代码生成,但是对于SpringBoot 项目来说生成的还是需要改动,而且也没得逻辑层,和控制层.但是这些东西是逃避不了,所以我就针对单表,做了一个代码生成器. my ...

  5. 写于vue3.0发布前夕的helloworld之四

    OK.接上回到render: with(this){return _c('div',{attrs:{"id":"app"}},[_v(_s(msg))])} 接 ...

  6. k8s:The connection to the server localhost:8080 was refused - did you specify the right host or port?

    前言 k8s 集群 node节点报错:The connection to the server localhost:8080 was refused - did you specify the rig ...

  7. Flask快速入门2

    六,Flask HTTP方法 Http协议是万维网中数据通信的基础.在该协议中定义了从指定URL检索数据的不同方法. 下表总结了不同的http方法: 序号 方法 描述 1 GET 以未加密的形式将数据 ...

  8. Django项目如何配置日志文件信息

    1.以dict的方式配置在settings.py中 # 日志文件简单配置 ''' LOGGING = { "version": 1, "disable_existing_ ...

  9. Oracle删除用户及用户下的全部数据

      1.查看用户 select * from all_users select * from user_users select * from dba_users 2.查看用户的连接状况 select ...

  10. 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(11)

    1.问题描述: 鸿蒙push右侧图表没有正常展示. 解决方案: .jpg格式文件,头信息必须是这个"jpg:ffd8". 2.问题描述: 安卓端App在开发者平台申请了Androi ...