前端开发笔记——JavaScript

简介: 阿里云前端路线JavaScript入门笔记
JS基础知识
  • 变量命名规则
  1. 变量的名字必须是数字、字母、下划线和$组成
  2. 变量的名字不能以数字开头
  3. 变量的名字不能是关键字for while if
  4. 建议 变量有意义
  5. Js中变量区分大小写
  6. 如果变量重名了,后面的会替换前面的
  7. 变量的命名尽可能使用驼峰法命名
  • 注释
  1. //
  2. / 无论是什么都不会被运行 /
JS数据类型
  • 数值Number、字符串String、布尔Booleanundefinednull、对象Object(函数、数组)
  1. 如果要在字符串中使用引号,请使用转义字符 \'
  2. 使用单引号或者双引号引起来的才是字符串
  3. 字符串相加与数值运算
  4. +既可以作为数学运算使用也可以作为字符串拼接使用
  5. 从前往后运算,如果两个变量都是数值型那么加号作为数学运算符
  6. 直到遇到一个字符串,此后所有的加号都是字符串拼接
  • 类型转换
  1. 其他类型转为数值类型:
var a=Number(null) //0
var b=Number(undefined) //NaN
var c=Number("c") ///NaN

var d=parseInt(null) //NaN
var e=parseInt(undefined) //NaN
var f=parseInt('23k') //23
var g=parseInt('k23') //NaN
  1. 其他类型转换为布尔类型:
var a=Boolean('0') //true
var b=Boolean(0) //false
var c= Boolean(null) //false
var d=Boolean(undefined) //false
var e=Boolean('') //false
var f=Boolean(' ')//true
JS操作符与运算符
  • 操作符在变量前面,先进行自身运算,再进行其他运算
  • 操作符在变量的后面,先进行其他运算,再进行自身运算
  • 在JS中 ,逻辑运算的结果是决定整个表达式的子表达式
var a=1;
var b=2;
var c=0;

console.log(c && b); //0
console.log(a || c); //1
//运算优先级 先运算&&再运算||
console.log(a||c&&b); //1
console.log(a&&b) //2(b是决定整个表达式的子表达式)
console.log(b&&a) //1
  • JS是一种弱类型语言,变量的数据类型存在自动转换
var a='2';
var b=2;
//==只比较值,不比较数据类型
console.log(a==b); //true
//=== 全等比较 既比较值也比较数据类型
console.log(a===b); //false
  • 运算符优先级(从高到低)
  1. ()优先级最高
  2. 一元运算符 ++ -- !
  3. 算数运算符 先* / 后+ -
  4. 关系运算符 > < >= <=
  5. 相等运算符 == === != !==
  6. 逻辑运算符 先&&后||
  7. 赋值运算 =
JS语句
  • switch case不加break和加break的区别
//不加break未捕获到
var a=10;
switch(a){
    case 1:
        console.log(1);
    case 2:
        console.log(2);
    case 5:
        console.log(5);
    default:
        console.log("ok");
}//ok

//不加break捕获到
var a=2;
switch(a){
    case 1:
        console.log(1);
    case 2:
        console.log(2);
    case 5:
        console.log(5)
    default:
        console.log("ok")
}//2 5 ok

//加break捕获到
var a=2;
switch(a){
    case 1:
        console.log(1);
        break;
    case 2:
        console.log(2);
        break;
    case 5:
        console.log(5);
        break;
    default:
        console.log("ok");
        break;
}//2
  • do while循环 先执行一次代码,然后再进行条件判断
JS数组
  • 创建数组
var a1=[];//直接定义空数组
var a2=new Array(1,"2",3)//构造函数方式创建数组
JS函数
  • 形参和实参

形式参数:是在声明函数时写的,多个形参使用“,”隔开,形参的值是不固定,形参仅仅是一个占位。与实参实际传入的值要一一对应。

实际参数:在调用时,实际传入函数中的值,多个使用“,”隔开,传入后,在函数中使用形参获取具体的值。

  • 函数返回值
  1. 如果函数中没有return,那么函数调用之后的返回值就是undefined。
function fun(a,b){
    var c=a-b;
}
var res=fun(10,1);
console.log(res) //undefined
  1. 如果函数中有return,但return后面没有值,那么函数调用之后的返回值就是undefined。
function fun(a,b){
    var c=a-b;
    return ;
}
var res=fun(10,1);
console.log(res) //undefined
  1. 函数return之后,不管后面有什么代码,均不执行,return后函数调用结束。
function fun(a,b){
    var c=a-b;
    return c;
    console.log(a);
}
var res=fun(10,1);
console.log(res) //9
  • 匿名函数

作用域在函数当中,防止全局变量的污染,封装一个局部作用。

  • 函数当作参数
  1. 回调
function f1(s){
    var k=123+s;
    console.log(k);
    s();
}
var f2=function(){
    console.log(123);
}
f1(f2);
  1. 闭包
function f1(){
    var a=10;
    var f2=function(){
        alert(12);
    }
    return f2;
}
var res=f1();
res();
  • 变量提升:在代码执行之前变量已经在编译阶段被声明

JS代码的运行分为两个阶段

  1. 解析(编译)阶段:语法检查,变量及函数进行声明
  2. 运行阶段:变量的赋值,代码流程的执行
console.log(a);//undefined
var a=1;
//先声明变量再运行代码
  • 代码执行

在变量未赋值的情况下,如果函数与变量同名,那么函数声明会替代变量声明

console.log(a);//f a{console.log("a"); }
function a(){
    console.log("a");
}
var a=1;
console.log(a);//1
  • 作用域与作用域链

作用域链:当函数中使用某个变量时,优先在自己的作用域中查找。如果找不到,就会向上一级作用域查找。如果找不到继续往上一层查找,直到全局作用域。如果还找不到直接报错。

// var a=0;
function f1(){
    // var a=1;
    function f2(){
        // var a=2;
        function f3(){
            // var a=3;
            console.log(a);
        }
        f3();
    }
    f2();
}
f1();
//从上到下取消注释
// a is not defined
//0
//1
//2
//3
JS对象
  • this指向
  1. 在方法中的this指的就是这个方法所在的对象
var obj1={
    name:'fqc',
    age:18,
    fu:function(){
        var a=this.age;
        console.log(a)
    }
}
obj1.fu();
  1. 普通函数中的this指向全局对象(window)
function fun(){
    console.log(this)//window
}
  1. this运行在哪个对象下,就指向哪个对象
k = '678';
function fun() {
    var k = '89'
    console.log(this.k);
}
var o1 = {
    k:'123',
    f:fun,
}
var o2 = {
    k:'345',
    f:fun,
}
o1.f();//123
o2.f();//345
  • 包装对象:原始类型(数值、字符串、布尔)的数据在一定条件下可以自动转为对象。如果包装对象使用完成会立即自动销毁。
  • 数字对象:获取n-m之间随机数的值
Math.floor(Math.random()*(m-n)+n);
  • 日期对象

JS中获取的时间是计算本地时间,JS中月份的数组是从0开始的。

其它
  • localStorage and sessionStorage

HTML5提供了两种在客户端存储数据的新方法:

  1. localStorage-没有时间限制的数据存储(5M)
  2. sessionStorage-针对一个session的数据存储,当用户关闭当前浏览器窗口,数据会被删除(5M)。

之前,这些都是由cookie完成的。但是cookie(4k)不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得cook速度很慢而且效率也不高。

个人博客地址:www.fangqc.xyz

相关文章
|
6天前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
7天前
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
29 3
|
15天前
|
前端开发 JavaScript
前端ES5 | js —添加元素方法
前端ES5 | js —添加元素方法
|
20天前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
27 1
|
20天前
|
Android开发 iOS开发 C#
Xamarin:用C#打造跨平台移动应用的终极利器——从零开始构建你的第一个iOS与Android通用App,体验前所未有的高效与便捷开发之旅
【8月更文挑战第31天】Xamarin 是一个强大的框架,允许开发者使用单一的 C# 代码库构建高性能的原生移动应用,支持 iOS、Android 和 Windows 平台。作为微软的一部分,Xamarin 充分利用了 .NET 框架的强大功能,提供了丰富的 API 和工具集,简化了跨平台移动应用开发。本文通过一个简单的示例应用介绍了如何使用 Xamarin.Forms 快速创建跨平台应用,包括设置开发环境、定义用户界面和实现按钮点击事件处理逻辑。这个示例展示了 Xamarin.Forms 的基本功能,帮助开发者提高开发效率并实现一致的用户体验。
42 0
|
20天前
|
开发者 C# Android开发
明白吗?Xamarin与Native的终极对决:究竟哪种开发方式更适合您的项目需求,让我们一探究竟!
【8月更文挑战第31天】随着移动应用开发的普及,开发者面临多种技术选择。本文对比了跨平台解决方案Xamarin与原生开发方式的优势与劣势。Xamarin使用C#进行跨平台开发,代码复用率高,可大幅降低开发成本;但因基于抽象层,可能影响性能。原生开发则充分利用平台特性,提供最佳用户体验,但需维护多套代码库,增加工作量。开发者应根据项目需求、团队技能和预算综合考量,选择最适合的开发方式。
59 0
|
20天前
|
开发者 Android开发 iOS开发
Xamarin开发者的神器!揭秘你绝不能错过的插件和工具,让你的开发效率飞跃式提升
【8月更文挑战第31天】Xamarin.Forms 是一个强大的框架,让开发者通过单一共享代码库构建跨平台移动应用,支持 iOS、Android 和 Windows。使用 C# 和 XAML,它简化了多平台开发流程,保持一致的用户体验。本指南通过创建一个简单的 “HelloXamarin” 应用介绍 Xamarin.Forms 的基本功能和工作原理。首先配置 Visual Studio 开发环境,然后创建并运行一个包含标题、按钮和消息标签的示例应用,展示如何定义界面布局及处理按钮点击事件。这帮助开发者快速入门 Xamarin.Forms,提高跨平台应用开发效率。
30 0
|
20天前
|
Java 开发者 关系型数据库
JSF与AWS的神秘之旅:如何在云端部署JSF应用,让你的Web应用如虎添翼?
【8月更文挑战第31天】在云计算蓬勃发展的今天,AWS已成为企业级应用的首选平台。本文探讨了在AWS上部署JSF(JavaServer Faces)应用的方法,这是一种广泛使用的Java Web框架。通过了解并利用AWS的基础设施与服务,如EC2、RDS 和 S3,开发者能够高效地部署和管理JSF应用。文章还提供了具体的部署步骤示例,并讨论了使用AWS可能遇到的挑战及应对策略,帮助开发者更好地利用AWS的强大功能,提升Web应用开发效率。
42 0
|
20天前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
43 0
|
1月前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
22 0