Javascript专项练习
Posted 勇敢*牛牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript专项练习相关的知识,希望对你有一定的参考价值。
javascript专项练习——三
一、输出结果
var name="World!";
(function()
var name;
if(typeof name=== 'undefined')
name='Jack';
console.log('Goodbye'+name);
else
console.log('hello'+name);
)();
执行后弹出的值是:Goodbye Jack
二、输出结果
console.log(1+ "2"+"2");
console.log(1+ +"2"+"2");
console.log("A"- "B"+"2");
console.log("A"- "B"+2);
console.log(1+ "2"+"2");
做加法时要注意双引号,当使用双引号时,JavaScript认为是字符串,字符串相加等于字符串合并。
因此,这里相当于字符串的合并,即为122.
console.log(1+ +"2"+"2");
第一个+"2"中的加号是一元加操作符,+"2"会变成数值2,因此1+ +"2"相当于1+2=3.
然后和后面的字符串“2”相合并,变成了字符串"32".
console.log("A"- "B"+"2");
A"-"B"的运算中,需要先把"A"和"B"用Number函数转换为数值,其结果为NaN,在减法操作中,如果有一个是NaN,则结果是NaN,因此"A"-"B"结果为NaN。
然后和字符"2"进行字符串合并,变成了NaN2.
console.log("A"- "B"+2);
"A"-"B"结果为NaN,然后和数值2进行加法操作,在加法操作中,如果有一个操作数是NaN,则结果为NaN。
三、显示的结果是
var x = new Boolean(false);
if (x)
alert('hi');
var y = Boolean(0);
if (y)
alert('hello');
if(x) 这里期望 x 是一个布尔类型的原始值,而 x 是一个对象。
任何对象转为布尔值,都为得到 true
切记!在 JS 中,只有 0,-0,NaN,“”,null,undefined 这六个值转布尔值时,结果为 false
题目的第二部分
一定要注意 y =Boolean(0),而不是 y = new Boolean(0)。这两个有很大区别,
用 new 调用构造函数会新建一个布尔对象,此处没有加 new,进行的是显示类型转换,正如上述第一条所说,0 转换布尔,结果为 false,所以此时 y 的值就是 false。如果加了 new,那么 y 就是一个 Boolean 类型的对象,执行 if(y) 时,对象转布尔,始终是 true,所以结果会与不加 new 的时候相反。
四、输出的结果为
var one;
var two = null;
console.log(one == two,one === two);
//true false
变量one只声明未赋值,所以其值为undefined,在使用
“==”
对undefined和null进行比较时,不能将null和undefined转换成其他任何值,并且规定undefined == null
返回结果为true,而使用“===”
进行比较时,由于“===”
需要严格区分数据类型,故undefined === null
返回结果为False
五、输出的结果是
function fn()
var num = 0;
return function()
console.log(++num);
var fun = fn();
fun(); ...①
fun(); ...②
闭包需要满足以下特征:
(1)有外层函数嵌套内层函数;
(2)内层函数使用外层函数的局部变量;
(3)内层函数返回外部,并且被全局变量保存
匿名函数的this指向window对象;
++num为前置自增,因此①式输出1,又因为num为闭包变量,会保存在内存中,再次调用fun()会继续自增,因此②式输出2。
六、正则表达式
var str = "Hellllo world";
str = str.replace(/(l)\\1/g, '$1');
1、定义
(l)表示第一个分组里有l
\\1表示所获取的第1个()匹配的引用
/g表示全局匹配
$1表示第一个分组里的值l
2、所以
(l)\\l 表示匹配两个连续字符ll,即ll
(l)\\l/g 表示全局匹配两个连续字符ll即llll
str.replace(/(l)\\1/g, '$1') 表示将ll替换成l
3、最终
Hellllo =》 Hello
- 基本数据类型:Number,String,Boolean,Undefined,Null
- 复杂数据类型:Object,Array,Function,RegExp,Date,Error
- 全局数据类型:Math
- 内置类型(Built-in)Null Undefined Boolean Number String Object Symbol
7种 - 原始类型(Primitives)Null Undefined Boolean Number String Symbol 6种
以上是关于Javascript专项练习的主要内容,如果未能解决你的问题,请参考以下文章
javascript-专项练习——实现Ajax的机制——原型链的理解
Javascript专项练习_02——原型重构_隐式转换_this指向_类型转换_模式匹配_数组移动_回文判断
Javascript专项练习_01——预解析分析_歧义混淆_闭包锁定_类型检测_四舍五入_自执行_箭头函数_地址(深浅)引用