js隐式类型转换,预编译、递归、作用域,作用域链、闭包、立即执行函数、继承圣杯模式
隐式类型转换
调用Number()
当有运算符(加减乘除,求余)时,会调用Number()转为数字再运算,除了 加 当 有字符串时就变身成拼接
Boolean();
String(); typeof()string返回的类型
预编译
在<script>里面的代码,进行预编译,将变量声明,,函数声明提高在逻辑的前面;执行代码时在GO(即window对象)中取出值,
var a = 1;
function text(){}
例如 Go{
a : undefined;
text : function(){}
}
当遇到函数的执行时(执行前一刻),也会进行预编译,和上面差不多,,1将声明变量,形参赋值为undefined,2 将形参值传入 3 声明方法
AO = (Active Object)
{
a : undefined;
text : function(){
}
ps:变量名和函数名相同时会覆盖 function text(a,b,c){
}
递归
就是找规律比如 ,,求阶乘 求n的阶乘,,
1 写出通式 f(n) = n * f(n-1); 2 找终止条件
function jiecheng(n) {
if( n == 1){
return 1;
} return n*jiecheng(n-1);
}
逻辑运算符
|| 寻找为真的表达式,,将值返回,不会再执行后面的表达式
&& 寻找假的表达式 将值返回,,不会再执行后面的表达式
作用域链
1、在函数声明后,,就会有 a[[scope]]生成,作用域链 例如数组
2、函数执行时,生成Ao
function a(){
function b(){
}
}
定义时 A scope chain{0 : GO,}
执行时 A scope chain{0: ao ;1 : GO,}
执行完毕时,销毁引用,回到定义时状态
定义时 B scope chain{0 : A - ao ; 1 : GO} 它的出生在A中,,定义时,,就把A的执行Ao拿到自己B链中
执行时 B scope chain{0 : B - a0; 1 : A - a0;; 2 : GO}
执行完毕时,销毁引用,回到定义时状态
闭包
var count = 1;
立即执行函数( 即表达式 可以执行)
只要是表达式加上()就会被立即执行 并且忽略函数名,,函数失效
+ - ! 可以把函数声明变为立即执行,执行后就失去了销毁
//立即执行函数,,只执行一次,,执行完就会销毁
// 可以有返回值和
() 为执行符号,,能执行表达式
(function() {} () );推荐写法
(function () {})();
var a = (function (a,b){ console.log("")
return a*b;
}(,))
console.log(a)
圣杯模式
// 圣杯模式,,继承
Father.prototype.sex = "女";
function Father()
{
}
function Son()
{
}
var inherit = (function (){
var F = function(){};
return function(Target,Origin)
{
F.prototype = Origin.prototype;
Target.prototype = new F(); //prototype 是个对象,,直接赋值,指向的是同一个内存,,改变一个就会都会改变,new F(); 每次返回都是新的对象 防止父类被篡改
Target.prototype.constuctor = Target;
Target.prototype.super = Origin.prototype;
}
}());
inherit(Son,Father);
var son = new Son();
var father = new Father();
js隐式类型转换,预编译、递归、作用域,作用域链、闭包、立即执行函数、继承圣杯模式的更多相关文章
- 深入js隐式类型转换
前言 相信刚开始了解js的时候,都会遇到 2 =='2',但是 1+'2' == '1'+'2'为false的情况,这时候应该会是一脸懵逼的状态,不得不感慨js弱类型的灵活让人发指,隐式类型转换就是这 ...
- '2'>'10'==true? JS是如何进行隐式类型转换的?
前言 '2'>'10'返回的true,可能很多人都不是很能理解吧? 在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转 ...
- js条件判断时隐式类型转换
Javascript 中,数字 0 为假,非0 均为真 在条件判断运算 == 中的转换规则是这样的: 如果比较的两者中有布尔值(Boolean),会把 Boolean 先转换为对应的 Number,即 ...
- dynamic_cast 和 static_cast 隐式类型转换的区别
首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion ...
- C++的隐式类型转换与转换操作符
C++标准允许隐式类型转换,即对特定的类,在特定条件下,某些参数或变量将隐形转换成类对象(创建临时对象).如果这种转换代价很大(调用类的构造函数),隐式转换将影响性能.隐式转换的发生条件:函数调用中, ...
- C++的隐式类型转换
C++是一种复杂的语言,其中有许多“好玩”的特性,学习C++的过程就像在海边捡一颗颗石头,只要坚持不懈,也许一颗颗小石头也能建起你自己小小的城堡. 废话完后,讲讲自己捡到的石头:隐式类型转换 学习出处 ...
- 【M21】利用重载技术避免隐式类型转换
1.考虑UPint 的加法+,UPint a, b, result; 为了使result = a+10; result= 10+a; 都能通过编译,操作符重载如下: const UPint opera ...
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 操作符重载和隐式类型转换
C#中,某些类型会定义隐式类型转换和操作符重载.Unity中,有些对象也定义了隐式类型转换和操作符重载.典型情况有:UnityEngine.Object.UnityEngine.Object的销毁是调 ...
- javascript的隐式类型转换
首先简单了解js的typeof,会返回六种类型 即 number string boolen function object undefined 也就是六种基本数据类型 显示类型转换大概有以下几种: ...
随机推荐
- 剑指offer——59二叉搜索树的第k大节点
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 题解: 考察的就是中序遍历 不过注意进行剪枝 cl ...
- divide方法
java.math.BigDecimal.divide(BigDecimal divisor, RoundingMode roundingMode) 返回一个BigDecimal,其值为(this/除 ...
- 6.2_springboot2.x分布式整合Dubbo
1.分布式应用 在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring,Spring Boot+Spring Cloud. 分布式系统: 特 ...
- 巧用border属性
border是常见的css2属性,大家的印象中是不是只是作为边框使用,如下所示: 事实上border,还可以当做图标去使用 我们先来看段代码 <style> .div1{ margin: ...
- 轻量级的惰性控件——ViewStub
在开发过程中,有时候,需要这样一种控件,正常情况下不可见,不占用任何布局空间,只在某种特定情况下显示,这种情况下,我们使用一个普通的View,利用设置setVisibility(View.GONE)自 ...
- nodejs MYSQL数据库执行多表查询
1.设计数据库 2.设计数据库表 genres表: books表: 3.安装MySQL模块 4. 代码编写 (1) 第一种方法: 在query中使用nextTables属性,将属性值设置为ture d ...
- git删除远程服务的文件夹
首先查看当前分支:git branch -a 删除缓存的idea:git rm --cached -r .idea 提交gitiginore文件,将.idea从源代码仓库中删除(-m 表示注解): ...
- MySQL 刷题知识点整理
1. left join on 与 right join on, inner join on 的区别: left join on 把左表中的行全部展示,而将寻找右表中符合的行展示: right joi ...
- 关于canvas绘制图像模糊问题
前段时间在做项目的裁剪并上传图像功能的时候,发现裁剪后展示的图像比较模糊,之后去百度上搜索了一下,看到有一个解决方案是设置canvas的宽高为css宽高的3倍,使用后感觉效果很好,当时就没管原理接着做 ...
- 2018阿里云云数据库RDS核心能力演进
摘要: 2018年云数据库RDS发展上,不但针对MySQL.SQL Server.PostgreSQL提供了适合个人入门用户的基础版产品,以实惠的价格普惠广大中小用户.更加入最新的MariaDB TX ...