首页 > 编程语言 >JavaScript学习笔记

JavaScript学习笔记

时间:2023-01-15 22:46:06浏览次数:67  
标签:function arr console log JavaScript 笔记 JS 学习 var

 

JavaScript学习笔记

概念

脚本语言:一行一行的翻译成机器语言,并一行一行的执行;而不是全部编译执行;

 

作用

表单动态校验、网页特效、服务端开发Node.js、桌面程序Electron、App(Cordova)、控制硬件-物联网(Ruff)、游戏开发(cocos2d-js)

执行

浏览器分成两部分:渲染引擎、JS引擎

渲染引擎:用来解析HTML和CSS,俗称内核,比如Chrome的blink;

JS引擎:也称为JS解释器,用来读取网页中的JS代码,对其处理后运行;

解释型语言(脚本语言):翻译一句,执行一句;

浏览器本身并不会执行JS代码,而是通过内部JS引擎(解释器)来执行JS代码;

JS引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行,所以JavaScript语言归为脚本语言,会逐行解释执行;

组成

JS的组成:

ECMAScript(定义JavaScript的语法):

DOM(Document Object Model文档对象模型):是W3C组织推荐的处理可扩展标记语言的标准编程接口。通过DOM提供的接口可以对页面上的各种元素进行操作(大小位置颜色等);

BOM(Browser Object Model浏览器对象模型):提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,比如弹出对话框、控制浏览器跳转、获取分辨率等;

位置

JS的3种书写位置:

1. 行内(写在开始标签内部);<input type=”button” value=”唐伯虎” onclick=”alert(‘秋香姐’)”>

2. 内嵌(HTML文件内部)最常用;<script>写JS代码</scritp>

3. 外部(单独的JS文件)双标签;JS代码量比较大的情况,不会破坏HTML的结构化页面,把大段JS放到HTML页面之外;引用外部JS问价你的script标签中间不可以写代码;<script src=”my.js”></script>

 

 

 

 

注释

 

单行 注释 //,VSCode中,快捷键Ctrl+/

多行注释 /**/,VSCode中,默认快捷键shift+alt+a,建议修改为Ctrl+Shift+/

 

输入输出

 

alert(msg)浏览器弹出警示框

console.log(msg)浏览器控制台打印输出信息

prompt(info)浏览器弹出输入框,用户可以输入

 

变量

var age;console.log(age);只声明,不赋值;输出:undefined;

console(age);不声明,不赋值,直接使用;输出:报错;

age=10;console.log(age);不声明,直接赋值;输出:10

命名规范

字母、数字、下划线、美元符号组成;

区分大小写;不能数字开头;不能关键字;

驼峰命名规范;变量名有意义;

不能使用var name;

var $name;是合法的;

 

var 18age;var &sex; var the world;var theworld;都是错误的或者不符合规范的;

 

数据类型

根据=右边的值类型,进行类型推断;

变量的数据类型是可以变化的;var x=10;x=’hello’;

简单数据类型

l Number 数字型,包含整形、浮点型;八进制(0开头)十六进制(0x开头);

l Boolean 布尔类型true、false,等价于1/0;

l string字符串,”张三”

l Undefined声明了,而未赋值的;

l Null空值;

 

Number.MAX_VALUE最大值(10的308次方);

Number.MIN_VALUE最小值(10的-324次方);

NaN表示非数字类型Not a Number;

Infinity无穷大,-Infinity负无穷大;

isNaN()判定一个变量是否为【非数字】类型;

 

字符串必须加引号,单引号或者双引号;

JS可以用单引号嵌套双引号,或者用双引号嵌套单引号;(外双内单,外单内双

转义字符:\n,\\,\’,\”,\*,\t,\b空格(相当于&nbsp);

转义字符必须放到引号里面(单引号双引号均可);

 

“我是一个’高富帅’的\n程序员”

length获取字符串长度;

字符串拼接,用加号+,如果其中一个是字符串,另外一个就会自动转换为字符串类型,然后再进行拼接;

‘hello’+18;’hello’+18+’world’;’12’+12;

true当1,false当0;true+2就是3,false+2就是2;

Null+1还是1,这里Null相当于0;Undefined+1是NaN;

 

typeof null结果是object;

 

类型转换

toString()转换为字符串;String()转换为字符串;

字符串拼接时非字符串类型自动转换为字符串;

 

转换为数字类型parseInt(str);parseFloat(str);Number(str);

隐式转换为数字:-*/运算符;

 

转为Boolean类型:Boolean();

能转换为false的:’’空字符串,0,NaN,null,undefined,其他都转换为true;

 

编译:一次性编译,全部编译完成后执行;

解释:解释一句,执行一句;

 

运算符

分类:算术、递增递减、比较、逻辑、赋值;

+-*/%浮点数的计算精度不如整数;

++前置,先返回,后自增;后置:先自增,后返回;--同理;

 

 

比较运算符:<,>,<=,>=,

==判等号,会自动进行类型转换;

!=不等,会自动进行类型转换;

===全等,要求类型和值都相同;

!==不全等,类型和值有一个不同,就是不全等;

18==‘18’  true ;    18===’18’   false;

逻辑运算符:&&  ||  !

短路运算:如果左边的值能够确定表达式的值,就不再向右计算了;

赋值运算符:+=,-=,/=,%=,

 

 

 

语句

if(){}else if(){} else if(){} else{};三元a>b?a:b;seconds<10?’0’+seconds:seconds;

switch(expression){case 1:语句1;break;case 2:语句2;break;default:语句3;}

for(var i=0;i<10;i++){}    while(){}   do{}while() 后面都不用加分号;;

 

var arr=new Array();var arr=[];var arr=[1,’hello’,true];

数组里面的各个元素数据类型可以不同;

数组的长度可以改变,可以向数组中添加新的元素;

添加数据arr[1]=1;arr[4]=6;如果索引已经存在,就覆盖原值,否则添加新数据;

不要给数组名赋值,会覆盖掉所有数组数据;arr=’hello’;

 

 

 

函数

function f(){}   function f2(p1,p2){}   function(){return 666;}

function getMax(a,b){return a>b?a:b;}  return只能返回一个值;

 

function fn(){console.log(arguments);console.log(arguments.length);}

全局作用域:整个script标签或者一个单独的js文件;

局部作用域:函数内部;

ES6中有第三种作用域:块级作用域,就是大括号{}范围内;

 

预解析

函数调用可以放在函数定义之前;

 

 

JS引擎运行分为2步:预解析,代码执行;

预解析会把JS里面所有var和function提升到当前作用域的最前面;

 

 

源代码

预解析/预提升

console.log(num);

var num=10;

//变量的使用必须写在赋值语句之后

var num;

console.log(num); //undefined

num=10;

fun();//报错

var fun=function(){console.log(‘hello’);}

//函数表达式的调用必须写在函数下面

var fun;

fun();

fun=function(){console.log(‘hello’);}

var num=10;

fun();

function fun(){

console.log(num);var num=20;

}

 

var num;

function fun(){

var num;

console.log(num);

num=20;

}

num=10;

 

 

 

 

 

对象

{}大括号,对象字面量;[]中括号,数组字面量,()小括号,提升优先级运算符;

创建对象3种方式:字面量{},new Object,构造函数;

 

var obj={name=’Cat’,age=22,sayHi:function(){console.log(“hello”);}}

多个属性和方法之间用逗号,隔开;

属性和函数都是用键值对语法格式:age:18;

obj.name;obj[“name”];obj.sayHi();

 

var obj=new Object();

obj.uname=’Tom’;

obj.age=22;

obj.sayHi=function(){console.log(‘hello’);

 

 

构造函数名首字母要大写;

构造函数不需要return语句;

调用构造函数,必须要用new关键字;

function Star(uname,age,sex){

this.name=uname;

this.age=age;

this.sex=sex;

this.sing=function(song){console.log(song);}

}

var ldh=new Star(‘刘德华’,18,’男’);ldh.sing(‘冰雨’);

 

new的执行过程:

1. 在内存中创建一个新的空对象;

2. 让this指向这个对象;

3. 执行构造函数里面的代码,给这个新对象添加属性和方法;

4. 返回这个新对象(所以构造里面不需要return);

遍历对象成员:

for(var k in obj)

{console.log obj.k;//输出属性名

console.log(obj[k]);//输出属性值

}

 

内置对象

JS对象分类3种:自定义对象,内置对象,浏览器对象;

内置对象有:Math对象,日期对象,数组对象,字符串对象;

查阅文档:https://developer.mozilla.org

如何学习一个方法:功能,参数,返回值,测试;

Math.PI;Math.max(1,2,3);Math.random();Math.floor();

Math.random() 函数返回一个浮点数,伪随机数在范围从0 到小于1,也就是说,从 0(包括 0)往上,但是不包括 1(排除 1);

var date=new Date();

获取总的毫秒数(时间戳)从1970年1月1日起:

date.valueOf();date.getTime();

var date=+new Date();date;Date.now();

arr isinstanceof Array、Array.isArray(arr);判定变量是不是数组;

arr.push(3);添加元素;

arr.pop();删除数组最后一个元素;返回值是删除的元素;

arr.shift();删除数组第一个元素;返回值是删除的元素;

arr.reverse()翻转数组;

arr.sort(function(a,b){return a-b;})升序排序数组;

arr.sort(function(a,b){return b-a;})降序排序数组;

arr.indexOf();arr.lastIndexOf();获取元素索引;

arr.toString();arr.join(‘-’);数组转字符串;

 

包装类型:将基本类型包装成复杂类型;

var str=’hello’;=>var temp=new String(‘hello’);var str=temp;

3个包装类型(引用类型):StringNumber、Boolean;

str.indexOf(“h”,3);str.charAt(3);

concat(str1,str2,str3,,,,);sbustr(start,length);slice(start,end);substring(start,end);

str.replace(‘a’,’b’);str.split(‘,’);

 

 

 

标签:function,arr,console,log,JavaScript,笔记,JS,学习,var
From: https://www.cnblogs.com/zhangdezhang/p/17054380.html

相关文章

  • 《物联网安全漏洞挖掘实战》读书笔记
    硬件UART通用异步收发器,有VCC,GND,Rx,Tx4个引脚,其中Rx负责接收数据,Tx负责发送数据,电压为0的是GND引脚,VCC引脚电压一般为3.3或3.5V.JTAG联合测试工作组文件系统Squas......
  • 算法学习笔记(9): 中国剩余定理(CRT)以及其扩展(EXCRT)
    扩展中国剩余定理讲解扩展之前,我们先叙述一下普通的中国剩余定理中国剩余定理中国剩余定理通过一种非常精巧的构造求出了一个可行解但是毕竟是构造,所以相对较复杂\[......
  • 李沐老师《动手学深度学习》(PyTorch版)学习笔记:第69-70课 微调
    【李沐老师观点】微调是深度学习,特别是计算机视觉来说,最重要的一种技术。整个深度学习为什么正常WORD?是因为微调的存在。所谓“微调”也称为“TransferLearning”,即迁移学......
  • JavaScript学习笔记—全局和局部作用域
    作用域(scope)指的是一个变量的可见区域全局作用域在网页运行时创建,在网页关闭时消耗所有直接编写到script标签中的代码都位于全局作用域中变量是全局变量,可以在任意......
  • JavaScript学习笔记—函数
    1.语法function函数名(){语句......}2.定义和调用函数-语法:函数名()使用typeof检查函数对象时返回function定义方式(1)函数声明(2)函数表达式(3)箭头函数//......
  • JavaScript原型和原型链?有什么特点?
    一、原型JavaScript 常被描述为一种基于原型的语言——每个对象拥有一个原型对象当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的......
  • Go语言学习之 Day02
    数组赋值二维数组切片切片操作slice内存slice切片操作slice元素删除点击查看代码1.所有资料,上课代码,同学作业=>githubweb链接:https://git......
  • Go语言学习之 Day03
    网络编程TCP服务器/客户端开发UDP服务器/客户端开发命令行聊天室web开发HTTP协议web应用开发客户端开发Web爬虫HTML结构GoqueryRPC......
  • Go语言学习之 Day06
    文件操作读文件:Open:打开文件并返回文件对象指针写文件:Create:创建文件并返回文件对象指针(文件不存在则创建,文件存在则清空)追加文件:OpenFile:按指定权限打开文件,并返回文......
  • Go语言学习之 Day07
    Go学习day07接口接口是自定义类型,是对是其他类型行为的抽象定义:接口定义使用interface标识,声明了一系列的函数签名(函数名、函数参数、函数返回值),在定义接口时可......