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——预解析分析_歧义混淆_闭包锁定_类型检测_四舍五入_自执行_箭头函数_地址(深浅)引用

运算符专项练习

1+x 证书 Web 前端开发 php 专项练习

Java之异常专项练习Java面试题