js使用说明

开始

https://www.jianshu.com/p/2ef9549c23f4
https://www.cnblogs.com/gcywj/p/8975616.html
https://www.jianshu.com/p/dee9f8b14771
==js代码的执行顺序
检查编译阶段:检查语法错误,变量的声明,函数的声明等
代码执行阶段:变量的赋值、函数的调用等执行语句
==js基础的三座大山
原型 原型链
作用域 闭包
异步 单线程

使用说明

数据类型:

基本类型typeof;undefined boolean number string
引用类型instanceof;object null function

typeof:

typeof undefined; //undefined
typeof 'abc'; //string
typeof true; //boolean
typeof {}; //object
typeof []; //object
typeof null; //object
typeof console.log; //function

控制语句:if switch for while for-in

var a = 10; var b = [];
一行代码调用多个语句: var a=1,b,c='nu';
var声明,但未赋值的变量。undefined
if (a) {} else {}
for (var i = 0; i < Things.length; i++) {
Things[i]
}
for (var i in stu){ //对象
}
var num = 1; //switch结构的()可以放各种数据类型,采用===判断。
switch(num)
{
case '1':
break;
default:
break;
}
while(condition)
{
//run
}

操作符与强制类型转换:

//字符串拼接
var a=100+10; //110
var b=100+'10'; //'10010'
//==运算符
100 == '100'; //true
0 == ''; //true
null == undefined; //true
//逻辑运算
console.log(10&&0) //0
console.log(''||'abc') //abc
var a=100;
console.log(!!a) //true
// & | 只能进行按位运算,如果两边不是数值类型,将转为数值类型运算
console.log(NaN===NaN);//false ???
typeof(NaN); //??? 
=== == !== != ^异或
//boolean运算符
//注意:JS中为false的为 0 NaN null undefined '' false
var a=true;
var b=100;
var c='';
//这里相当于obj.a===null||obj.b===undefined,简写形式
//这是jquery源码中推荐的方法,其他的都用===
if (obj.a==null){}

函数

没返回值,接收为undefined;返回值个数??
function xx_(p0, p1)
{
return true;
}
函数声明调用,没有先后之分
func()
function func(){}
匿名名函数,一定要先声明
var func = function(){}
func()
直接将匿名函数赋值给一个事件:
windows.οnlοad=function(){}//加载后直接执行
自执行函数:
//开头用!表示这是自执行函数。 推荐
//用() 将匿名函数声明与调用包裹在一起。 推荐
//用()将匿名函数声明语句进行包裹。
var f = new Function(“x”, "return xx;");
等同于 var f = function(x){return x
x; };

常用数值函数

isNaN用于检测一个变量,是不是一个非数值。(调用Number函数,尝试将变量转为数值类型)
Number函数,用于将各种类型转为数据类型
undefined NaN
null 0
true false 1 0
纯数值字符串,可以;否则 NaN;
如果字符串‘’ 0;‘ ’ 0;
parseInt()将字符串转为数值,和Number有区别

常用其他函数

alter() 弹框输出
prompt() 弹框输入:参数都可省略:输入提示内容;输入框的默认文本;
document.write(); 在浏览器屏幕上打印
console.log(); 浏览器控制台打印
var str = prompt(“请输入一句话”, “你真帅”)
alter(str);

对象数组

对象 属性-值 的集合;数组 值 的集合;
var obj = {};
var arr = [];
obj[2] = ‘a’;
arr[2] = ‘a’;
console.log(obj[2]);//a
console.log(arr[2]);//a
console.log(obj.length);//undefined
console.log(arr.length);//3
var arr = [1,2,3,4,5,6]
var stu = {
name:“a”,
sex:‘ss’,
}

对象函数

var o1 = {};
var o2 = new Object();
var o3 = new f1();
function f1() {};
var f2 = function () {};
var f3 = new Function(‘str’, ‘console.log(str)’);
o1 o2 o3 为普通对象
f1 f2 f3 为函数
o3.constructor == f1。o3是构造函数f1的实例

原型

对于ECMAScript中的引用类型而言,prototype是保存着他们所有实例方法的真正所在。
所有对象的__proto__ 都指向其构造器的prototype
所有函数对象的__proto 都指向 Function.prototype, 它是一个空函数。
Function.prototype.proto === Object.prototype
Object.prototype.proto === null
总结:
原型和原型链是JS实现继承的一种模型。
原型链的行程是真正靠__proto__ 而非prototype
eg:
var animal = function(){}
var dog = function(){}
animal.price = 2000;
dog.prototype = animals;
var tidy = new dog();
dog.price; //undefined
tidy.price; //2000

异步和单线程

js是单线程执行的语言,必须有异步。

console.log(10);
setTimeout(function() {
	console.log(40)
}, 0);
setTimeout(function() {
console.log(20)
}, 1000);
console.log(30);//异步
//打印结果是:10 30 40 20

//执行setTimeout时,这里面的函数会被存起来在一个队列里面,不会立即执行。所有程序处理完,处理机处于空闲状态,立马看看队列里面有没有待执行的函数啥的。发现setTimeout里面的函数,这个时候执行。

同步会阻塞代码运行,异步不会
console.log(1000);
alert(2000);//会阻塞,不会产生异步
console.log(3000);
//打印结果是:1000 2000(按确定之后出现3000)3000

前端需要使用异步的场景是哪些(需要等待的时候)
定时任务:setTimeout,setInterval
绑定时间:addEventListener (click等等)
网络请求:ajax和img动态加载

结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值